diff --git a/.editorconfig b/.editorconfig index 68a969eaf..da84fc404 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,5 +8,8 @@ indent_style = space insert_final_newline = true trim_trailing_whitespace = true -[*.{yml,yaml}] +[*.{yml,yaml,pug,json,css,sh}] indent_size = 2 + +[Makefile] +indent_style = tab diff --git a/compiler-args-app.ts b/compiler-args-app.ts index 4475fcbba..82b0a1422 100644 --- a/compiler-args-app.ts +++ b/compiler-args-app.ts @@ -29,6 +29,7 @@ import {CompilerArguments} from './lib/compiler-arguments.js'; import * as Parsers from './lib/compilers/argument-parsers.js'; import {executeDirect} from './lib/exec.js'; import {logger} from './lib/logger.js'; +import {BaseParser} from './lib/compilers/argument-parsers.js'; const program = new Command(); program @@ -40,7 +41,21 @@ program .requiredOption('--parser ', 'Compiler parser type') .requiredOption('--exe ', 'Path to compiler executable') .option('--padding ', 'Padding for output formatting', '40') - .option('--debug', 'Enable debug output'); + .option('--debug', 'Enable debug output') + .allowUnknownOption(false) + .configureOutput({ + writeErr: (str) => { + if (str.includes('too many arguments')) { + console.error('Error: Unexpected arguments provided.'); + console.error('This tool only accepts the following options: --parser, --exe, --padding, --debug'); + console.error('\nExample usage:'); + console.error(' node --import tsx compiler-args-app.ts --parser gcc --exe /path/to/gcc'); + console.error('\nNote: Do not use shell redirections like "2>&1" directly - they will be interpreted as arguments'); + process.exit(1); + } + process.stderr.write(str); + } + }); program.parse(); const opts = program.opts(); @@ -90,6 +105,13 @@ class CompilerArgsApp { execCompilerCached: async (command: string, args: string[]) => { return executeDirect(command, args, {}, fn => fn); }, + getDefaultExecOptions: () => { + return { + env: process.env, + cwd: process.cwd(), + timeout: 10000, + }; + } }; if (this.parserName === 'juliawrapper') { @@ -99,22 +121,22 @@ class CompilerArgsApp { async getPossibleStdvers() { const parser = this.getParser(); - return await parser.getPossibleStdvers(this.compiler); + return await parser.getPossibleStdvers(); } async getPossibleTargets() { const parser = this.getParser(); - return await parser.getPossibleTargets(this.compiler); + return await parser.getPossibleTargets(); } async getPossibleEditions() { const parser = this.getParser(); - return await parser.getPossibleEditions(this.compiler); + return await parser.getPossibleEditions(); } - getParser() { + getParser(): BaseParser { if (compilerParsers[this.parserName as keyof typeof compilerParsers]) { - return compilerParsers[this.parserName as keyof typeof compilerParsers]; + return new (compilerParsers[this.parserName as keyof typeof compilerParsers])(this.compiler); } console.error('Unknown parser type'); process.exit(1); @@ -122,7 +144,7 @@ class CompilerArgsApp { async doTheParsing() { const parser = this.getParser(); - await parser.parse(this.compiler); + await parser.parse(); const options = this.compiler.possibleArguments.possibleArguments; if (parser.hasSupportStartsWith(options, '--target=')) { console.log('supportsTargetIs'); @@ -150,6 +172,11 @@ class CompilerArgsApp { console.log(await this.getPossibleTargets()); console.log('Editions:'); console.log(await this.getPossibleEditions()); + + console.log('supportsOptOutput:', !!this.compiler.compiler.supportsOptOutput); + console.log('supportsStackUsageOutput', !!this.compiler.compiler.supportsStackUsageOutput); + console.log('optPipeline:', this.compiler.compiler.optPipeline); + console.log('supportsGccDump', !!this.compiler.compiler.supportsGccDump); } } diff --git a/cypress.config.ts b/cypress.config.ts index 2af4daa9f..0ddb4bf7e 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,8 +1,8 @@ import {defineConfig} from 'cypress'; export default defineConfig({ - viewportWidth: 1000, - viewportHeight: 700, + viewportWidth: 1280, + viewportHeight: 1024, e2e: { baseUrl: 'http://127.0.0.1:10240/', supportFile: 'cypress/support/utils.ts', diff --git a/cypress/README.md b/cypress/README.md new file mode 100644 index 000000000..060a385c9 --- /dev/null +++ b/cypress/README.md @@ -0,0 +1,165 @@ +# Cypress E2E Tests + +This directory contains end-to-end tests for Compiler Explorer using Cypress. + +## Running Tests + +### Starting Compiler Explorer for Testing + +First, start a local Compiler Explorer instance with a clean configuration: + +```bash +npm run dev -- --language c++ --no-local +``` + +The `--no-local` flag is important as it ensures your setup is clean of any local properties. + +### Running Cypress Tests + +In another terminal: + +```bash +# Run all Cypress tests +npm run cypress + +# Run specific test file +npm run cypress -- run --spec "cypress/e2e/claude-explain.cy.ts" + +# Open Cypress interactive UI (recommended for development) +npm run cypress:open +``` + +When using the interactive UI, choose "E2E Testing" and select your browser. + +## Important Testing Patterns & Lessons Learned + +### 1. **Always Use `:visible` Selectors** +GoldenLayout creates template elements that exist in the DOM but aren't visible. Always use `:visible` to avoid selecting template elements: +```javascript +// ❌ Bad - might select template elements +cy.get('.explain-content').should('contain', 'text'); + +// ✅ Good - only selects visible elements +cy.get('.explain-content:visible').should('contain', 'text'); +``` + +### 2. **Performance: Clear Intercepts in `afterEach`** +Cypress intercepts accumulate across tests causing O(n²) performance degradation. Always clear them: +```javascript +import {clearAllIntercepts} from '../support/utils'; + +afterEach(() => { + // Use the utility function to clear intercepts + clearAllIntercepts(); + + // Or manually clear them: + cy.state('routes', []); + cy.state('aliases', {}); + + // ... other cleanup +}); +``` + +### 3. **Mock Setup Timing is Critical** +Always set up API mocks BEFORE any action that might trigger requests: +```javascript +// ❌ Bad - pane constructor might make requests before mocks are ready +openClaudeExplainPane(); +mockClaudeExplainAPI(); + +// ✅ Good - mocks ready before pane opens +mockClaudeExplainAPI(); +openClaudeExplainPane(); +``` + +### 4. **Wait for Async DOM Updates** +Don't just wait for API calls - wait for the actual DOM changes: +```javascript +// ❌ Bad - API completes but DOM might not be updated yet +cy.wait('@getOptions'); +cy.get('.dropdown').select('value'); + +// ✅ Good - wait for specific DOM state +cy.wait('@getOptions'); +cy.get('.dropdown option[value="loading"]').should('not.exist'); +cy.get('.dropdown').select('value'); +``` + +### 5. **Use Test Data, Not Production Values** +Always use clearly fake test data to: +- Prevent confusion with real values +- Make it obvious when viewing test output +- Ensure tests never accidentally hit production APIs + +```javascript +// Use values like: test_first, test_second, focus_a, focus_b +// Not: beginner, expert, assembly, optimization +``` + +### 6. **Helper Functions for Common Patterns** +Extract common test patterns to helpers, but keep them in the test file if they're specific to one feature: +```javascript +// In test file for feature-specific helpers +function openClaudeExplainPaneWithOptions() { + mockClaudeExplainAPI(); + openClaudeExplainPane(); + cy.wait('@getOptions'); + waitForDropdownsToLoad(); +} + +// In utils.ts for general helpers +export function setMonacoEditorContent(content: string) { ... } +``` + +### 7. **State Persistence Between Pane Instances** +Be aware that some state might be static (shared between instances) while other state is per-instance: +- Static state (like consent, cache) persists when closing/reopening panes +- Instance state is lost when panes close +- This affects how you structure tests for features that should persist + +### 8. **Block Production APIs** +Always block production API calls in tests to catch configuration issues: +```javascript +cy.intercept('https://api.compiler-explorer.com/**', { + statusCode: 500, + body: {error: 'BLOCKED PRODUCTION API'} +}).as('blockedProduction'); +``` + +## Common Issues & Solutions + +### Tests Getting Progressively Slower +- **Cause**: Intercept accumulation +- **Solution**: Clear intercepts in `afterEach` using `clearAllIntercepts()` from utils or manually with `cy.state('routes', [])` + +### "Element not found" Despite Being Visible +- **Cause**: Selecting template elements from GoldenLayout +- **Solution**: Use `:visible` pseudo-selector + +### API Mocks Not Working +- **Cause**: Mock setup after the request is made +- **Solution**: Set up mocks before opening panes or triggering actions + +### Dropdown Selection Failing +- **Cause**: Trying to select before async population completes +- **Solution**: Wait for loading indicators to disappear first + +### State Not Persisting in Tests +- **Cause**: Not understanding static vs instance variables +- **Solution**: Check if the feature uses static state that should persist + +## Test Organization + +- Keep feature-specific test helpers in the test file itself +- Only put truly reusable utilities in `support/utils.ts` +- Use descriptive helper function names that indicate what they do +- Group related tests in `describe` blocks +- Use consistent test data across all tests in a feature + +## Debugging Tips + +1. Use `cy.log()` to debug what values you're actually getting +2. Check the Cypress command log for unexpected API calls +3. Look for console errors that might indicate JavaScript issues +4. Use `.then()` to inspect element state at specific points +5. Check network tab for requests hitting production instead of mocks \ No newline at end of file diff --git a/cypress/e2e/claude-explain.cy.ts b/cypress/e2e/claude-explain.cy.ts new file mode 100644 index 000000000..4ce9cd7c1 --- /dev/null +++ b/cypress/e2e/claude-explain.cy.ts @@ -0,0 +1,613 @@ +// Copyright (c) 2025, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import {clearAllIntercepts, setMonacoEditorContent, stubConsoleOutput} from '../support/utils'; + +// Claude Explain specific test utilities +function mockClaudeExplainAPI() { + // Mock GET request for options + cy.intercept('GET', 'http://test.localhost/fake-api/explain', { + statusCode: 200, + body: { + audience: [ + {value: 'test_first', description: 'Test first audience level'}, + {value: 'test_second', description: 'Test second audience level'}, + {value: 'test_third', description: 'Test third audience level'}, + ], + explanation: [ + {value: 'focus_a', description: 'Test focus A explanation type'}, + {value: 'focus_b', description: 'Test focus B explanation type'}, + {value: 'focus_c', description: 'Test focus C explanation type'}, + ], + }, + }).as('getOptions'); + + // Mock POST request for explanation + cy.intercept('POST', 'http://test.localhost/fake-api/explain', { + statusCode: 200, + body: { + status: 'success', + explanation: '## Test Assembly Explanation\nThis is a test explanation from the mocked API.', + usage: {totalTokens: 150}, + model: 'claude-3-test', + cost: {totalCost: 0.001}, + }, + }).as('explainRequest'); +} + +function openClaudeExplainPane() { + cy.get('[data-cy="new-compiler-dropdown-btn"]:visible').click(); + cy.get('[data-cy="new-view-explain-btn"]:visible').click(); +} + +function setupClaudeExplainEnvironment() { + // Start with clean intercepts + clearAllIntercepts(); + + // Belt and suspenders: block production API calls + cy.intercept('https://api.compiler-explorer.com/**', {statusCode: 500, body: {error: 'BLOCKED PRODUCTION API'}}).as( + 'blockedProduction', + ); + + // Set up configuration + cy.visit('/', { + onBeforeLoad: (win: any) => { + stubConsoleOutput(win); + win.compilerExplorerOptions = win.compilerExplorerOptions || {}; + win.compilerExplorerOptions.explainApiEndpoint = 'http://test.localhost/fake-api/explain'; + }, + }); + + // Force override after page loads + cy.window().then((win: any) => { + win.compilerExplorerOptions.explainApiEndpoint = 'http://test.localhost/fake-api/explain'; + }); +} + +function mockClaudeExplainAPIWithOptions() { + // Just call the standard mock for consistency + mockClaudeExplainAPI(); +} + +function mockSuccessfulExplanation() { + cy.intercept('POST', 'http://test.localhost/fake-api/explain', { + statusCode: 200, + body: { + status: 'success', + explanation: + '## Understanding Your Assembly Code\n\nThis simple program:\n\n```cpp\nint main() {\n return 42;\n}\n```\n\nCompiles to very efficient assembly that:\n1. Sets up the stack frame\n2. Moves the value 42 into the return register\n3. Cleans up and returns\n\n### Key Instructions\n- `mov eax, 42` - Places our return value in the EAX register\n- `ret` - Returns control to the caller', + usage: { + inputTokens: 250, + outputTokens: 120, + totalTokens: 370, + }, + model: 'claude-3-haiku', + cost: { + inputCost: 0.00025, + outputCost: 0.0012, + totalCost: 0.00145, + }, + }, + }).as('explainRequest'); +} + +function mockAPIError() { + cy.intercept('POST', 'http://test.localhost/fake-api/explain', { + statusCode: 500, + body: {error: 'Internal server error'}, + }).as('explainError'); +} + +function giveConsentAndWait() { + cy.get('.consent-btn:visible').click(); + cy.wait('@explainRequest'); +} + +function mockCachedExplanation() { + const mockResponse = { + status: 'success', + explanation: 'This is a cached explanation', + usage: {totalTokens: 100}, + model: 'claude-3', + cost: {totalCost: 0.001}, + }; + + cy.intercept('POST', 'http://test.localhost/fake-api/explain', mockResponse).as('explainRequest'); +} + +// Simplified test helpers +function waitForDropdownsToLoad() { + cy.get('.explain-audience:visible option[value="loading"]').should('not.exist'); + cy.get('.explain-type:visible option[value="loading"]').should('not.exist'); +} + +function openClaudeExplainPaneWithOptions() { + mockClaudeExplainAPI(); + openClaudeExplainPane(); + cy.wait('@getOptions'); + waitForDropdownsToLoad(); +} + +describe('Claude Explain feature', () => { + beforeEach(() => { + setupClaudeExplainEnvironment(); + }); + + afterEach(() => { + // Clear all Cypress intercepts to prevent O(n²) accumulation + cy.state('routes', []); + cy.state('aliases', {}); + + // Clear storage and state but avoid aggressive DOM manipulation + cy.window().then(win => { + // Clear any stored explain state/cache + win.localStorage.clear(); + win.sessionStorage.clear(); + + // Reset compiler explorer options + win.compilerExplorerOptions = {}; + + // Instead of force-closing tabs, let natural cleanup happen + // The next beforeEach will reload the page anyway + }); + }); + + describe('Basic functionality', () => { + it('should open Claude Explain pane from compiler toolbar', () => { + openClaudeExplainPaneWithOptions(); + + // Verify the explain pane opened + cy.get('.lm_title').should('contain', 'Claude Explain'); + cy.get('.explain-consent').should('be.visible'); + }); + + it('should show consent dialog on first use', () => { + openClaudeExplainPaneWithOptions(); + + // Verify consent dialog is shown (use :visible to avoid template elements) + cy.get('.explain-consent:visible').should('be.visible'); + cy.get('.explain-consent:visible').should('contain', 'Consent Request'); + cy.get('.explain-consent:visible').should('contain', 'Claude Explain will send your source code'); + cy.get('.explain-consent:visible').should('contain', 'compilation output'); + cy.get('.explain-consent:visible').should('contain', 'Anthropic'); + + // Verify consent button exists + cy.get('.consent-btn:visible').should('be.visible'); + cy.get('.consent-btn:visible').should('contain', 'Yes, explain this code'); + }); + + it('should remember consent for the session', () => { + mockClaudeExplainAPIWithOptions(); + mockClaudeExplainAPI(); + + // Open first explain pane and give consent + openClaudeExplainPane(); + cy.get('.consent-btn:visible').click(); + cy.wait('@explainRequest'); + + // Close the explain pane + cy.get('.lm_close_tab').last().click(); + + // Set up mocks again before reopening + mockClaudeExplainAPIWithOptions(); + + // Open a new explain pane + openClaudeExplainPane(); + + // Verify consent dialog is NOT shown again (check for visible consent, not template) + cy.get('.explain-consent:visible').should('not.exist'); + cy.get('.explain-content').should('be.visible'); + }); + }); + + describe('no-ai directive handling', () => { + it('should detect no-ai directive and show special message', () => { + // Update code to include no-ai directive + setMonacoEditorContent('// no-ai\nint main() {\n return 42;\n}'); + + openClaudeExplainPaneWithOptions(); + + // Verify no-ai message is shown (use :visible to avoid template elements) + cy.get('.explain-no-ai:visible').should('be.visible'); + cy.get('.explain-no-ai:visible').should('contain', 'AI Explanation Not Available'); + cy.get('.explain-no-ai:visible').should('contain', 'no-ai'); + + // Verify consent dialog is NOT shown (check visible elements only) + cy.get('.explain-consent:visible').should('not.exist'); + }); + + it('should detect case-insensitive no-ai directive', () => { + // Update code with different case + setMonacoEditorContent('// NO-AI\nint main() {\n return 0;\n}'); + + openClaudeExplainPaneWithOptions(); + + // Should still detect it (use :visible to avoid template elements) + cy.get('.explain-no-ai:visible').should('be.visible'); + }); + }); + + describe('API interaction and explanations', () => { + it('should fetch and display explanation after consent', () => { + mockClaudeExplainAPIWithOptions(); + mockSuccessfulExplanation(); + + // Open explain pane + openClaudeExplainPane(); + + // Give consent and wait for API call + giveConsentAndWait(); + cy.wait('@getOptions'); + + // Verify explanation is displayed (use :visible to avoid template elements) + cy.get('.explain-content:visible').should('be.visible'); + cy.get('.explain-content:visible').should('contain', 'Understanding Your Assembly Code'); + cy.get('.explain-content:visible').should('contain', 'mov eax, 42'); + + // Verify markdown is rendered (should have headers) + cy.get('.explain-content:visible h2').should('exist'); + cy.get('.explain-content:visible h3').should('exist'); + cy.get('.explain-content:visible code').should('exist'); + + // Verify stats are shown + cy.get('.explain-stats:visible').should('be.visible'); + cy.get('.explain-stats:visible').should('contain', 'Fresh'); + cy.get('.explain-stats:visible').should('contain', 'Model: claude-3-haiku'); + cy.get('.explain-stats:visible').should('contain', 'Tokens: 370'); + cy.get('.explain-stats:visible').should('contain', 'Cost: $0.001450'); + }); + + it('should handle API errors gracefully', () => { + mockClaudeExplainAPIWithOptions(); + mockAPIError(); + + // Open pane and consent + openClaudeExplainPane(); + cy.get('.consent-btn:visible').click(); + + // Wait for error + cy.wait('@explainError'); + + // Verify error is displayed (use :visible to avoid template elements) + cy.get('.explain-content:visible').should('contain', 'Error'); + cy.get('.explain-content:visible').should('contain', 'Server returned 500'); + + // Verify error icon + cy.get('.status-icon.fa-times-circle:visible').should('be.visible'); + }); + + it('should show loading state during API call', () => { + mockClaudeExplainAPIWithOptions(); + + // Mock slow API response with direct reply (no network request) + cy.intercept('POST', 'http://test.localhost/fake-api/explain', { + delay: 1000, + statusCode: 200, + body: { + status: 'success', + explanation: 'Test explanation', + }, + }).as('slowExplain'); + + // Open pane and consent + openClaudeExplainPane(); + cy.get('.consent-btn:visible').click(); + + // Verify loading state (use :visible to avoid template elements) + cy.get('.status-icon.fa-spinner.fa-spin:visible').should('be.visible'); + cy.get('.explain-content:visible').should('contain', 'Generating explanation...'); + + // Wait for response + cy.wait('@slowExplain'); + + // Verify loading state is gone + cy.get('.status-icon.fa-spinner:visible').should('not.exist'); + cy.get('.status-icon.fa-check-circle:visible').should('be.visible'); + }); + }); + + describe('Options and customization', () => { + it('should load and display audience and explanation options', () => { + openClaudeExplainPaneWithOptions(); + + // Verify audience dropdown (use :visible to avoid template elements) + cy.get('.explain-audience:visible').should('be.visible'); + cy.get('.explain-audience:visible option').should('have.length', 3); + cy.get('.explain-audience:visible option[value="test_first"]').should('exist'); + cy.get('.explain-audience:visible option[value="test_second"]').should('exist'); + cy.get('.explain-audience:visible option[value="test_third"]').should('exist'); + + // Verify explanation type dropdown + cy.get('.explain-type:visible').should('be.visible'); + cy.get('.explain-type:visible option').should('have.length', 3); + cy.get('.explain-type:visible option[value="focus_a"]').should('exist'); + cy.get('.explain-type:visible option[value="focus_b"]').should('exist'); + cy.get('.explain-type:visible option[value="focus_c"]').should('exist'); + + // Verify info buttons + cy.get('.explain-audience-info:visible').should('be.visible'); + cy.get('.explain-type-info:visible').should('be.visible'); + }); + + it('should show popover descriptions for options', () => { + openClaudeExplainPaneWithOptions(); + + // Click audience info button (use :visible to avoid template elements) + cy.get('.explain-audience-info:visible').click(); + + // Verify popover appears + cy.get('.popover:visible').should('be.visible'); + cy.get('.popover-body:visible').should('contain', 'Test_first:'); + cy.get('.popover-body:visible').should('contain', 'Test first audience level'); + + // Click away to close + cy.get('.explain-content:visible').click(); + cy.get('.popover:visible').should('not.exist'); + + // Click explanation info button + cy.get('.explain-type-info:visible').click(); + cy.get('.popover:visible').should('be.visible'); + cy.get('.popover-body:visible').should('contain', 'Focus_a:'); + cy.get('.popover-body:visible').should('contain', 'Test focus A'); + }); + + it('should re-fetch explanation when options change', () => { + // Block production API + cy.intercept('https://api.compiler-explorer.com/**', { + statusCode: 500, + body: {error: 'BLOCKED PRODUCTION API'}, + }).as('blockedProduction'); + + // Only set up GET mock for options, not POST (we have custom POST below) + cy.intercept('GET', 'http://test.localhost/fake-api/explain', { + statusCode: 200, + body: { + audience: [ + {value: 'test_first', description: 'Test first audience level'}, + {value: 'test_second', description: 'Test second audience level'}, + {value: 'test_third', description: 'Test third audience level'}, + ], + explanation: [ + {value: 'focus_a', description: 'Test focus A explanation type'}, + {value: 'focus_b', description: 'Test focus B explanation type'}, + {value: 'focus_c', description: 'Test focus C explanation type'}, + ], + }, + }).as('getOptions'); + + let explainCallCount = 0; + cy.intercept('POST', 'http://test.localhost/fake-api/explain', (req: Cypress.Interception) => { + explainCallCount++; + req.reply({ + status: 'success', + explanation: `Explanation #${explainCallCount} for ${req.body.audience} audience`, + usage: {totalTokens: 100}, + model: 'test-model', + cost: {totalCost: 0.001}, + }); + }).as('explainRequest'); + + // Open pane and wait for options to load first + openClaudeExplainPane(); + cy.wait('@getOptions'); + waitForDropdownsToLoad(); + + // Give consent + giveConsentAndWait(); + + // Wait a bit for content to render + cy.wait(100); + + // Verify initial explanation (just check for the count, not the full text) + cy.get('.explain-content:visible').should('contain', 'Explanation #1'); + + // Change audience level + cy.get('.explain-audience:visible').select('test_second'); + + // Should trigger new request + cy.wait('@explainRequest'); + cy.get('.explain-content:visible').should('contain', 'Explanation #2'); + + // Change explanation type + cy.get('.explain-type:visible').select('focus_b'); + + // Should trigger another request + cy.wait('@explainRequest'); + cy.get('.explain-content:visible').should('contain', 'Explanation #3'); + }); + }); + + describe('Caching and reload', () => { + it('should cache responses and show cache status', () => { + mockClaudeExplainAPIWithOptions(); + mockCachedExplanation(); + + // Open pane and get first explanation + openClaudeExplainPane(); + giveConsentAndWait(); + + // Verify fresh status (use :visible to avoid template elements) + cy.get('.explain-stats:visible').should('contain', 'Fresh'); + + // Close and reopen pane (should use client cache) + cy.get('.lm_close_tab').last().click(); + + // Set up options mock only (needed for pane constructor) but NOT explanation mock + mockClaudeExplainAPIWithOptions(); + openClaudeExplainPane(); + + // Since consent was already given, it should go straight to cached content + // (no consent dialog should appear) + cy.get('.explain-consent:visible').should('not.exist'); + + // Should use cached explanation data + cy.get('.explain-content:visible').should('contain', 'This is a cached explanation'); + cy.get('.explain-stats:visible').should('contain', 'Cached (client)'); + }); + + it('should bypass cache when reload button is clicked', () => { + mockClaudeExplainAPIWithOptions(); + + let callCount = 0; + cy.intercept('POST', 'http://test.localhost/fake-api/explain', (req: Cypress.Interception) => { + callCount++; + const isBypassCache = req.body.bypassCache === true; + req.reply({ + status: 'success', + explanation: `Explanation #${callCount}${isBypassCache ? ' (bypassed cache)' : ''}`, + }); + }).as('explainRequest'); + + // Get initial explanation + openClaudeExplainPane(); + giveConsentAndWait(); + + cy.get('.explain-content:visible').should('contain', 'Explanation #1'); + + // Click reload button (use :visible to avoid template elements) + cy.get('.explain-reload:visible').click(); + cy.wait('@explainRequest'); + + // Should have made a new request with bypassCache flag + cy.get('.explain-content:visible').should('contain', 'Explanation #2 (bypassed cache)'); + }); + }); + + describe('Compilation state handling', () => { + it('should handle compilation failures', () => { + // Add invalid code + setMonacoEditorContent('this is not valid C++ code'); + + openClaudeExplainPaneWithOptions(); + + // Should show compilation failed message (use :visible to avoid template elements) + cy.get('.explain-content:visible').should('contain', 'Cannot explain: Compilation failed'); + + // Should not show consent dialog + cy.get('.explain-consent:visible').should('not.exist'); + }); + + it('should update explanation when code changes', () => { + mockClaudeExplainAPIWithOptions(); + + let explainCount = 0; + cy.intercept('POST', 'http://test.localhost/fake-api/explain', (req: Cypress.Interception) => { + explainCount++; + req.reply({ + status: 'success', + explanation: `Explanation for version ${explainCount}`, + }); + }).as('explainRequest'); + + // Open pane and get initial explanation + openClaudeExplainPane(); + giveConsentAndWait(); + + cy.get('.explain-content:visible').should('contain', 'Explanation for version 1'); + + // Change the code + setMonacoEditorContent('int main() {\n return 100;\n}'); + + // Wait for new explanation + cy.wait('@explainRequest'); + + cy.get('.explain-content:visible').should('contain', 'Explanation for version 2'); + }); + }); + + describe('UI state and theming', () => { + it('should persist option selections in state', () => { + // Mock API with test options + mockClaudeExplainAPI(); + + // Open pane + openClaudeExplainPane(); + + // Add error listener to catch JS errors + cy.window().then(win => { + win.addEventListener('error', e => { + cy.log('JS Error:', e.message, 'at', e.filename + ':' + e.lineno); + }); + win.addEventListener('unhandledrejection', e => { + cy.log('Unhandled Promise Rejection:', e.reason); + }); + }); + + // Wait for options to load + cy.wait('@getOptions'); + + // Wait for dropdown to be populated (wait for "Loading..." to disappear) + cy.get('.explain-audience:visible option[value="loading"]').should('not.exist'); + cy.get('.explain-type:visible option[value="loading"]').should('not.exist'); + + // Give consent first to make dropdowns available + cy.get('.consent-btn:visible').click(); + + // Wait for dropdowns to be populated with actual options + cy.get('.explain-audience:visible option[value="test_second"]').should('exist'); + cy.get('.explain-type:visible option[value="focus_b"]').should('exist'); + + // Now change options after consent (use :visible to avoid template elements) + cy.get('.explain-audience:visible').select('test_second'); + cy.get('.explain-type:visible').select('focus_b'); + + // Wait for the explanation request triggered by option changes + cy.wait('@explainRequest'); + + // Get the current URL (which includes state) + cy.url().then((url: string) => { + // Clear intercepts from previous test + cy.state('routes', []); + cy.state('aliases', {}); + + // Set up mocks BEFORE visiting + mockClaudeExplainAPI(); + + // Block production API + cy.intercept('https://api.compiler-explorer.com/**', { + statusCode: 500, + body: {error: 'BLOCKED PRODUCTION API'}, + }).as('blockedProduction'); + + // Visit the URL with configuration + cy.visit(url, { + onBeforeLoad: (win: any) => { + win.compilerExplorerOptions = win.compilerExplorerOptions || {}; + win.compilerExplorerOptions.explainApiEndpoint = 'http://test.localhost/fake-api/explain'; + }, + }); + + // Force override after page loads (in case it gets reset) + cy.window().then((win: any) => { + win.compilerExplorerOptions = win.compilerExplorerOptions || {}; + win.compilerExplorerOptions.explainApiEndpoint = 'http://test.localhost/fake-api/explain'; + }); + + // Verify options are restored + cy.get('.explain-audience:visible').should('have.value', 'test_second'); + cy.get('.explain-type:visible').should('have.value', 'focus_b'); + }); + }); + }); +}); diff --git a/cypress/e2e/frontend.cy.ts b/cypress/e2e/frontend.cy.ts index f541c3b9b..72a06577c 100644 --- a/cypress/e2e/frontend.cy.ts +++ b/cypress/e2e/frontend.cy.ts @@ -19,6 +19,7 @@ const PANE_DATA_MAP = { tree: {name: 'Tree', selector: 'view-gnatdebugtree'}, debug: {name: 'Debug', selector: 'view-gnatdebug'}, cfg: {name: 'CFG', selector: 'view-cfg'}, + explain: {name: 'Claude Explain', selector: 'view-explain'}, }; describe('Individual pane testing', () => { @@ -68,6 +69,7 @@ describe('Individual pane testing', () => { addPaneOpenTest(PANE_DATA_MAP.tree); addPaneOpenTest(PANE_DATA_MAP.debug); addPaneOpenTest(PANE_DATA_MAP.stackusage); + addPaneOpenTest(PANE_DATA_MAP.explain); // TODO: Bring back once #3899 lands // addPaneOpenTest(PaneDataMap.cfg); @@ -92,8 +94,7 @@ describe('Known good state test', () => { cy.visit( // This URL manually created. If you need to update, run a local server like the docs/UsingCypress.md say, // then paste this into your browser, make the changes, and then re-share as a full link. - - '/#z:OYLghAFBqd5TB8IAsQGMD2ATApgUWwEsAXTAJwBoiQIAzIgG1wDsBDAW1xAHIBGHpTqYWJAMro2zEHwAsQkSQCqAZ1wAFAB68ADIIBWMyozYtQ6AKQAmAELWblNc3QkiI2q2wBhTIwCuHCwgVpSeADJELLgAcgEARrjkIPIADpgqpG4sPv6BwZRpGa4iEVGxHAlJ8k64LlliJGzkJDkBQSE1dSINTSSlMfGJyY6Nza15HaN9kQMVQ7IAlI6YfuTo3DwA9JsA1AAqAJ4puDsHK%2BQ7WHg7KIm4lDsUO4yYbNg7pju4mpwpzAB0Fh0AEFIiQdioAI5%2BJq4CBgnYsAILHYWADsdhBO2xO3IuBIqxYiICOwAVMSOBYAMyY4HogAiPCWjF4AFZBEEeHpKJheF57PYIed1qirFSBJQSLomUsANYgVk6Yy8WSCDgKpWc7m8niCFQgJVSrlMyhwWBoLAsYTkDimdbUDzEMjkIjYIwmMwASTdlls9mWq3WvG2%2ByOJzOq0uOBOtzxDyeLzeHyJ31%2BAKBoNEEOhsPhWaRHBR6NpONx%2BMJFLJFOptIZJpZPHZlC1gh1PitFFtLBFADUiLgAO6JHYQQikJ7WcULQRGvQLJa3N5DCDMlVq4Ks5vSnm8PUGyXSpZmqBoch%2BFQkFBEKg0CBYDgpJiJaKcDbAAW2HZ4OhsPyMEiCLgToUK6RjCKIEhSNwcgKKIqgaNoxqUIYfCOLgzjFEEECeOMQSoeEMzlJURiFJkIi4SR6RkSw/REUMqGdJhPRjL4bRGIx9RTLRgxJAxUwUXxvTcXMvFLCQeK4KBOiro2HLbjqABK57ggAEp6Ck7H2g7Du%2Bfqft%2Bv7/iOY7OqK4oPD4D5Phck58NOB7GvOlCLngSQrsqPCqpQ6pWJuLY7rqjj7rOMqUPKshKg2VJyUhOozoepqIMeqAYJgVnMDetD3o%2BGUgMABl/iQlB4AAbkQ6xaQOADyxz%2BQw/6JPqEBxNucSRE0By8BKbXsOQBxVXE%2Bi1EaEr3lwohVSwjCdUheBxH4wBeFIjD6vwgh4F2wDSLN17DUQJW4Kt3LfLUfgkBsEpguh26MEQcTkB1Ph4Nu4lEOqa1LHQJjAColU1awXWCOB4iSNIMHA/BWjbihximOYH4OLdcT6pASyYCkmGra2B3kC6eAo%2B5HHuNhLDeKxeT4aTwnEahpGYQJBRUZh1P0WhGGcb0DNEywzHTGUPHsfx5N4SMQmEQLdkBms0GUAOpgkDVJCeh2CUNk2/k6jsul2PpuA/oVxnATZYp2fFjkLrgS5uXKGoeV5Pl%2BfJu5BYaCXJWgF5sOgsrnmwwD3Le2XWS%2BXC8NrgoFf%2BgFG6BqEwyowobCGhzHKc5xRtcsb3I8FyJu8nypg%2B6YggiUIwniebggWRYYhmpZ4gS5BEgWVYFjWGZ1pKElSTJ6tOzwPTezsqh%2ByclU6QjX564Z4KjkbZmoTslk5cOtn2SFTkucuMn2xuW6xc7%2Bqu45iXIGgKwkCkZ0OneaUr%2BQIdvpPkcAaEMduqhwOQWD8gQ2oUNIRhgOB6KRAa9xitqXgVUzpX3BJgOgWtn7TwNhAZe1kF7r0PBbK2tAd7rl8vvSBgUj4OTnKfc0IAzwXltOgcgmBvgpBvkHDKj8w5IP1lHN%2B448ZgUUN/aCv9FCQ0QtyeO6E9rExwsLIwBF%2BYiUokULIDM6ZZBZrxNmEieZC1yCLbmvM1GC05tIwSzQDGS3ErgSSbppIeT7gfHgSkLw7AALJezoTsfAmgUimAyCITS/YhwXHDrrDhs8TIThNhZO%2B6C15mznNg1yuC7b4MdvYvcx94lhRAAANkirwaKhDWzOw3jbKkaJ/hijFGiVkABONENS%2BB8CsFYNEHkrDrj4DoTU/c4kmmSklAZZ8QAnXQGdCgN8mg/XUKYdCYgUCYAHJyUa0STCYWmVERgcyFn%2BWYUMfKyD/yUF2Q/V8ztjnQPEPMxZ24RnAnID9Z2IyGjEE5EDPhoMBGwWUP/ERBh3RwwwAjYwd0CZowxlkLGPIcZ40OvAJYCdAwywvC89ZsyrlLJnBJQGssQFgNsRAopPBPGnVMsEmwU9Qkjn5HpBwHj56xNIaFLe1ssmKmSd5PeGtD7BTdklNAwB2AkDmgtCxAcsorOfKcngZKKUz2jtw2OXz%2BEyEEXBH50N2LiK6FhKROiZFU3FvI2mTMlHGMZookohqaYaO1bzLmWqmJcStazT2LE9UmL5rMGmYlu7WPAYUgKABxaIwI9g7HpLgeawB9gSX8dpIJ7CZ6G24QvKJ6VV4m0webZyltEnuQbLvAhXLiE8pPu7EA14mESpOaHaVibCryudIq%2BOidgy7BTuGdOVwYx3HjLnV4%2BcUw/CLrgQEJcsxl1zAiauqJa5YhxA3CsLdyRtxpB3NEjIu6WNAh9fFAadRhDCD2ZxOx1JxsCYgmlsqUHhONuZJe1aMG9M3rm7e7KHb7u5RkvpfKQAoDYCoWU6FGA%2BDjIHatrC61Xpfo2kCH8lUfJVV84RGqGIOqyB4UmDNZFetZio8iZr8M0WdeovR2i2JofZt0J1cjrWupaGa%2BjZifXbr9Xu4tgaVJeAfXic9E9oMHLCfSyJD7013tNoyl9OD81rg5UWnpLtJM2zZVFAlAVn3kKQBQ9GRVwNicgzKmDXCm3wZbYittoZU4RguN2m4vac7PAHcmL4w6/ijozKXHMFdp3IlnSWBd5Ym6VhXQEduIJO6ip3QIf1xbFZ8YTQJylc8U22TTffJ9Smc3SeU3kzyKTP0lu/UeX9Aq2BCsjQtKt%2BmpWGcE7Bnhn93lQSQ3/BCqGbWYUw2Td1oQDW0bwyagjPWiNmI6xzN1FGxvUbFv10j5GKai1MSRmQLGrEGhi/3YNobw0VejePBLOtyUv2TaZVLon0sMpKVlvNeC5OpKIekyTmmUqMEYCVDgit1BEGOLdKIlUb48AALR0BYJgQHxAVCSHINgQHJUpB%2BFwID9gXAVA8G3Mcgz9bOEbThswQHKgDgVF8EddaAQUjA7/IwQHHAcB/guvVxV9VzrkEB5ES0ahoSsFcFIQH3iVBqFWhKL%2BiHwZCPVUhNAr33ufe%2B%2BhGY/2xEYSAgAMT8N2TrxCHVAWVngbQSoMhzSaAAdVdJeDchpfV4rVmpg9R6T1xa%2Bz9mY8XL2HevUZZLp2RNoIyhlq7zKkkFvy8Wx7G9ntoH/YB4DDRgBVfvpjxLcrjNwd4RBEXqrvltcAZqqjOqsNmpw3RdRRHlGDeI7NnPmi7WMfQ9NpbFePVcxo7h0SW61s2OtwVzj3GxB7EDS72rSXb2pvOzEzNz6ElvqD3dgroesGstywUkPmX5SslkP8Pg2St/b539v%2BQDZ2kcs6d0tJT3%2BlDJSIwwOHpgDA87GV7FQEFXwaZ4kQHzKScIea6LtVWfRFGEizdF3U72LXUDxBSDoXWH5yeAuVgVdwjkExOwiXvR9wzSnAn2uzfXlCsBqQ3133wK3wAA531OUFMSEw9y10A6BY89N48assdX4n8TMjBFdhoVc1dtVeBJ1vNRAFheA28e52N%2B4vBld%2B9B8k1PdkDF5UDxMs1MkA8ZM8sZ9l9yDeUhlSpyoxUIANCgxAomCU9Gs09v8M8UNs9KNNEutsM%2BsW8FFqJS8LVy8bDzDbV5tdFa8tEZsnDFsGMesmNltzFLdgC2QbdeAI0ypewAl%2BM3djtJDxM0sx90DMsFDbsP0VDS0yFy1I8gNXsvAOAOA49g56DE8G1k8Gsv8f5kNxd/9nDOsSZutJtC8JZzU7DCMy9RsyMjFfD3D9F/DvCm9PCi8VsBC2MQDNsuMl48iB8GCkC4jR9fdLt59kiSD5NT9VDs1sDCCN8rBGlCDZAykdi9i0QqQPIl8FMKDBkKEANdNxVqta1xCSj9CyizNpYLMO005IxbMs4%2B1HMkwC5XNi5MxwRuC4QfNCw/M64AtG5m4SQQtKQ11wsN1MVWMrdgiCtgQnF9t4CQkJDh8zsZC/dFjX0WVp91Q2U0iitw9KFlIOBK1aDCi7iGCGcX8msKjWsAFqips896iFtGijVmj6ZWiHD2jujXDK8XCBimj6N%2Bj68nDVtBDRj7FHFwRnEz1MT7iPdcTvdH0Fjs0liSTghsl/gdAxQqQGlCCmlCDsk18aliDySz8St0B0BsAycJlsBsA8R%2BdFYMM1pKBlovT3AfS4gXhvYVB/SMUjk0ouxsAAB9CAvWIgbQdyDHIo6IurYqfENgJgUM8FAMiUR4xnJ8ZHXAaMlQPwOgBgRMz6Fkz5Nk35agbxekMndrX7VgTAMM7FIspJB6aqHM8M5oRgRsh8bcRiICaZfnJJbmSwgvawwY41Bw%2Bw6iYU3PavLo5c5vWcvoxjdciWeFW6D7Xs7FT2EgbMjXCUUVQc0BJCQA/cPwV0dsn0kqdGE8706LIQ%2BxQNLwbjPYCSTYBSPYMIKY4ojU4TFA7U8fJIokwPWTHyKkf4OpLfHQc0wgtEPgKkWQRUEIO0q7eUPgcpFC7Y2QQgmpbJAioikik4kIwKbCnJKwf4NEbJeiqwCKKwRC5CtEffXgQ/dUY/WfTLA/SijAnGXxIIWQIAA%3D%3D', + 'http://localhost:10240/#z:OYLghAFBqd5TB8IAsQGMD2ATApgUWwEsAXTAJwBoiQIAzIgG1wDsBDAW1xAHIBGHpTqYWJAMro2zEHwAsQkSQCqAZ1wAFAB68ADIIBWMyozYtQ6AKQAmAELWblNc3QkiI2q2wBhTIwCuHCwgVpSeADJELLgAcgEARrjkIPIADpgqpG4sPv6BwZRpGa4iEVGxHAlJ8k64LlliJGzkJDkBQSE1dSINTSSlMfGJyY6Nza15HaN9kQMVQ7IAlI6YfuTo3DwA9JsA1AAqAJ4puDsHK%2BQ7WHg7KIm4lDsUO4yYbNg7pju4mpwpzAB0Fh0AEFIiQdioAI5%2BJq4CBgnYsAILHYWADsdhBO2xO3IuBIqxYiICOwAVMSOBYAMyY4HogAiPCWjF4AFZBEEeHpKJheF57PYIed1qirFSBJQSLomUsANYgVk6Yy8WSCDgKpWc7m8niCFQgJVSrlMyhwWBoLAsYTkDimdbUDzEMjkIjYIwmMwASTdlls9mWq3WvG2%2ByOJzOq0uOBOtzxDyeLzeHyJ31%2BAKBoNEEOhsPhWaRHBR6NpONx%2BMJFLJFOptIZJpZPHZlC1gh1PitFFtLBFADUiLgAO6JHYQQikJ7WcULQRGvQLJa3N5DCDMlVq4Ks5vSnm8PUGyXSpZmqBoch%2BFQkFBEKg0CBYDgpJiJaKcDbAAW2HZ4OhsPyMEiCLgToUK6RjCKIEhSNwcgKKIqgaNoxqUIYfCOLgzjFEEECeOMQSoeEMzlJURiFJkIi4SR6RkSw/REUMqGdJhPRjL4bRGIx9RTLRgxJAxUwUXxvTcXMvFLCQeK4KBOiro2HLbjqABK57ggAEp6Ck7H2g7Du%2Bfqft%2Bv7/iOY7OqK4oPD4D5Phck58NOB7GvOlCLngSQrsqPCqpQ6pWJuLY7rqjj7rOMqUPKshKg2VJyUhOozoepqIMeqAYJgVnMDetD3o%2BGUgMABl/iQQhMCQiT6hAcTbnEkRNAcvAStV7DkAcADycT6LURoSveXCiC1LCMHVSF4HEfjAF4UiMPq/CCHgXbANIw3Xp1RAAG64NN3LfLUfilfVghguh26MEQcTkLVPh4Nu4lEOqM2UOt5BxOkuD0rg80nWYCV0CYwAqFpA4tccnISuB4iSNIMFg/BWjbihximOYH4OCdcT6pASyYCkmHTa2j0ung6PuRx7jYSw3isXk%2BHk8JxGoaRmECQUVGYbT9FoRhnG9EzJMsMx0xlDx7H8ZTeEjEJhFC3ZAZrNBlADqYJBAyQnodglDZNv5Oo7Lpdj6bgP6FcZwE2WKdnxY5C64EublyhqHleT5fnybuQWGglyVoBebDoLK55sMA9y3tl1kvlwvC64KBX/oBJugahYOQZD8jQ2osNIfDvMeOTTMEYLImUUUWRMwzWRs7xHMrd0Iu5GLvP8%2BXwvc6LTfNI30vibgklutJHmay7PA9L7OyqAHJwAzpyNfgbhngqOJtmahOyWTlw62fZIVOS5y4yY7G5brFrv6u7jmJcgaArCQKS7Q6d5pav5Bh2%2BU/RwBoRx26CeKEn0Ep4oMOIW5PDAc50Uj7Rkv3Q%2BPAWq7WvuCTAdAdYvxnkbCAK9rKLw3oeK2NtaC73XL5A%2B2oj7BQ9klU8ylbToHIJgb4KRb4hwyk/COyDDYx3fuOAmYFv4Q1/rBZQadAEGHYuhKuWEcIt2ptgduzMi7kUkbI6iMj641zYgxURXQ%2BZcUlgXQSLFa6twFrMOmYkJJSQgTFYhPAlIXh2AAWR9jQnY%2BBNApFMBkEQml%2BxDguJHfWbC54mQnGbCy98MHrwtnOHBrk8EOwIc7KBe4T5RLCiAAAbJFXg0UiGtldpvO2VI0T/DFGKNErIACcaJyl8D4FYKwaIPJWHXHwHQmoB6RJNMlJK3Tz4gG2ugXaFBb5ND%2BuoUw6ExAoEwAOEGghGFsEwmMqIjBJnTP8owoY%2BUUH/koBsx%2Br5XZ7JgeIKZMztz9OBOQP6rt%2BkNGIJyQQideEyD/nBQRcN3SIwwMjYwp0iaY2xlkXGPJ8aug2vAJYZ5RC3VwHsTAvh/kyyDHxe5SyJmnNmZKCS%2B15agPAX3SxuSeAuJ2qZPxNhp4BJHPyPSDhnELwiQ5FJ29bapMVHE7y%2B8tYkOSZ08heV2AkBGmNTuQcsphKYQcng5LKWz1jpw%2BO/Cf4vP4QAj56jOakwkQYqRMjS7yJ1Yo1mOi6aV00fzHmGimLaPzqa72%2Bi1Hizbia%2Bipiu7mIJTkgKABxaIwI9g7DeqNYA%2BwJJeO0r41hs9jacMXqE9Ka8zZYMts5a2MT3INj3oQ7lgVj5Mr5b068DCJXPilTK1%2B8rnSKszsKDYIZDjHFOOcKM1xYz3EeBcRM7xPipgfOmEECIoQwjxHmcEBYiwYgzKWPEBJyBEgLFWAsNYMx1ixe6t0M0LFep1GEMIPY7E7HUuGnxSDaWytQUE025ll4lqvebfNW8007w5U7bdPKH1n3NCAFAbAVCynQowHwcZg63uYdKqNhVK0gU/kq55UN/7vIziIzV4ic4KLzsY9m%2BrsgKOw8oq1XMHVUzNdaiWtr2b2paAoyj7c3XdwNFunN3qVJeBvXiY9k8z2vxjaZWy8aH6YI6Y%2B3BGa1ycuze0t2D67bsqioSgKQnP1IC/VjIqIGE37PDuBrj2y35AQVTBhg/5EgAFpTBSAOBkaaoMSqmY4EQFQagN3ciM6VcgJm3GOaAjip5UEVWpwQuqkjWRs4U0NRhuiFdsMlxZmXF1FcVHN0NYl515GEuqOIzR%2BLMg6OgXuiAtgYDN2epzcrDjkadNUvnrGvjN6NOCek6mkTMnMmeXiW%2B3NpDT6ewFQs4VwBi0abA%2BW3TUGuFfwgnB15AjAtIY1WI0LucabZfprFg1jq8MreC9XJLjqUtGMi4YnmNrMOiTXfR3uGt5M6l9f6wNuBg3ldPXrCl3Hqu8ZCXVgTjL8lNfTfg8TCSrFJI/T1xgjBVocGVuoIgxxPq4ABrfHgJm6AsEwCZ4gKhJDkGwCZ1aUg/C4BM%2BwLgKgeDbj2cNiD7C5qI2YCZlQBwKgIu3NgAIKQUd/kYCZjgOA/wbAlPpqthnbPuciJaNQ0JWCuCkB539ahrOPJ4X5%2BDbzZvcjQODyH0PYfoRmIjzOVqgIADE/DdkwkfI32BVZ4G0EqDII0mgAHVXSXg3IaMxG6BCMYHmVmHcOZhPZG1Vy9cavvhKTUJ6Jz7M3tZzSDzeSmUo/r/QBhoA31MPyp5VuVHDhfcMmyr6baq5vbdQ2Fx1EWpZGuLrhtbNEtv7ctShhujeMt1xO4djunuGMlYHsx1jYg9jeqD9TwJDLPvoIyg137LLYmx8Bx1hP2C2WteyfHxr8pWSyH%2BHwNJ%2B%2BD%2BH4P/IBsTTOUtLaYk0HPSv0pHocHD0wAUedgWTioX0GwKi5MyyzaSvC/J1VUQyASMFFTy29z7ygXUDxBSBoXWEcyeGOTgWeyjl0x42CWvSn0TSnCjz%2B2fXlCsHKV3yP2IP3wAA4X0uVJM81E8et0A6AM9xUhsy0x8xtq1kNOoTczdNFeAh1cwwQFheBzsPUrsOsvBjcR9g9o13t0Cl5MC71k1mUn1WUF9X0N9qCyFek8BVoiB7RbwtCdCNhWDDNlcACAt05gD5tuCyYK9iMq9dEa91tiNNs0t2DzV29XDSNUtTsjtqNO8pZcsvd6w2RrteA3ptDexvFOMXtz0jJpC71%2BMI9sDGs59RM2tF81Cus5wk9%2BUU9/1wcvAOAOBBss9mCc9IM88P8JtwYi9AD1dhFLCLdrCltpEttos685EG8XCGjCMqNksCMdsvCu8nVei9s/DdEAje8RCmMWNl5CjR8yjYjQ9as5CZ8V8UiWsKCJMr91Dut%2BU6ETBIhijQ5SjoiK0KjxtkIQCe9LtgjRCTA/BrgXE/g2BIhkD/EpCljJ9b1ViU11jV8OUMjeUnJT849JNft8DSDd8rAalSDZBCkYS4S0QqQPJ18wSNDYB%2BVf01NGCSitNJDyj38Lia1Aw61dgG1wxm0rgYw7h4xO1Xhu0Uwfg%2B1cBAQB0sxeCR0ERx1URJ0sQcQZ0KwF1yQl0aQV00RGQhDAifcoFgRbEJ4KtTjUC4iw8Vifs1ilD58xN1R2VATr9ekzwLx7NMo74mC8SWDzjFVfNTCEM6jLjuitU0NwtlsuiHCcNDVnDvD7StFdtMt%2BjvTBjq9KNjsyNPSJibjZIOsbFwQ7Ej15S3jXslTPiMDvi1TfiNTUis00l/gdAxQqRqlSDalSC0lt9ylyDdSaD%2BVgB0B0A2cHxhlsBsA8RHNlYQt7pJoWz3B7o4gXhfYVAOzMUepTBsAAB9GAg2IgbQdySnE4lAgJWafEF4qafst/D%2BT/ZgEnXAYclQPwOgBgScpYK0vhMwoRSgYAW6P4XAY3XAZc%2B6WHNgekdnILeHNHG8iUDc2Jc6QGQFTsiUZoRgB8h8bcRiICMZRzWJLOJo9DZ0z010mLDo/DFvdwr01vF0oM3wkMrvJYFQE6KHb8zFb2EgPsvCnFUVACorbkUAnuSgPwV0V8wQVaLGIii3YrKY/vLwVjPYCSTYBSPYMIeYxUkPCfZM%2BrVMxQ5rTYqkf4SpffHQAs0gtEPgKkWQRUEIcslfeUPgIpBS6E2QUg8pNJHSvSgylEkIwKcE9JKwf4NENJayqwCKKwWS%2BStEE/XgM/dUC/JfRrEEzy37R6DxIIWQIAA%3D%3D', { onBeforeLoad: win => { stubConsoleOutput(win); diff --git a/cypress/e2e/monaco-test.cy.ts b/cypress/e2e/monaco-test.cy.ts new file mode 100644 index 000000000..596736cbb --- /dev/null +++ b/cypress/e2e/monaco-test.cy.ts @@ -0,0 +1,68 @@ +// Copyright (c) 2025, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import {setMonacoEditorContent} from '../support/utils'; + +describe('Monaco Editor Utilities', () => { + beforeEach(() => { + cy.visit('/'); + }); + + it('should set simple code content', () => { + const simpleCode = 'int main() { return 42; }'; + setMonacoEditorContent(simpleCode); + + // Verify the content was set (basic check) + cy.get('.monaco-editor').should('contain.text', 'main'); + }); + + it('should set complex multi-line code content', () => { + const complexCode = `#include +#include + +int main() { + std::vector nums = {1, 2, 3, 4, 5}; + + for (int num : nums) { + std::cout << num << std::endl; + } + + return 0; +}`; + setMonacoEditorContent(complexCode); + + // Verify the content was set (basic check) + cy.get('.monaco-editor').should('contain.text', 'iostream'); + cy.get('.monaco-editor').should('contain.text', 'vector'); + }); + + it('should handle special characters and quotes', () => { + const codeWithSpecialChars = `const char* message = "Hello, \"World\"!"; +int result = (x > 0) ? x : -x;`; + setMonacoEditorContent(codeWithSpecialChars); + + // Verify the content was set (basic check) + cy.get('.monaco-editor').should('contain.text', 'Hello'); + }); +}); diff --git a/cypress/support/utils.ts b/cypress/support/utils.ts index d38dfbe37..10fe69921 100644 --- a/cypress/support/utils.ts +++ b/cypress/support/utils.ts @@ -11,3 +11,55 @@ export function assertNoConsoleOutput() { cy.get('@consoleWarn').should('not.be.called'); cy.get('@consoleError').should('not.be.called'); } + +/** + * Clear all network intercepts to prevent accumulation + */ +export function clearAllIntercepts() { + // Clear any existing intercepts by visiting a clean page and resetting + cy.window().then((win: Cypress.AUTWindow) => { + // Reset any cached state + win.compilerExplorerOptions = {}; + }); +} + +/** + * Sets content in Monaco editor using a synthetic paste event + * @param content - The code content to set + * @param editorIndex - Which editor to target (default: 0 for first editor) + */ +export function setMonacoEditorContent(content: string, editorIndex = 0) { + // Wait for Monaco editor to be visible in DOM + cy.get('.monaco-editor').should('be.visible'); + + // Select all and delete existing content + cy.get('.monaco-editor textarea').eq(editorIndex).focus().type('{ctrl}a{del}', {force: true}); + + // Trigger a paste event with our content + cy.get('.monaco-editor textarea') + .eq(editorIndex) + .then(($element: JQuery) => { + const el = $element[0]; + + // Create and dispatch a paste event with our data + const pasteEvent = new ClipboardEvent('paste', { + bubbles: true, + cancelable: true, + clipboardData: new DataTransfer(), + }); + + // Add our text to the clipboard data + pasteEvent.clipboardData?.setData('text/plain', content); + + // Dispatch the event + el.dispatchEvent(pasteEvent); + }); + + // Wait for compilation to complete after content change (if compiler exists) + cy.get('body').then(($body: JQuery) => { + if ($body.find('.compiler-wrapper').length > 0) { + cy.get('.compiler-wrapper').should('not.have.class', 'compiling'); + } + // If no compiler wrapper exists yet, that's fine - compilation will happen when compiler is added + }); +} diff --git a/docs/ClaudeExplain.md b/docs/ClaudeExplain.md new file mode 100644 index 000000000..3a3ecf426 --- /dev/null +++ b/docs/ClaudeExplain.md @@ -0,0 +1,120 @@ +# Claude Explain + +Claude Explain uses Claude AI to provide natural language explanations of assembly code generation, helping users understand how their source code is translated into assembly and what compiler optimizations are applied. + +## How It Works + +1. Click the "Explain" button in the compiler toolbar to open a dedicated explanation pane +2. After compilation completes: + - Failed compilations show "Cannot explain: Compilation failed" + - Code with `no-ai` directive shows a special message + - Otherwise, users consent to sending code and compilation output to the Claude API +3. Customize explanations by selecting audience level (beginner/intermediate/expert) and explanation type (assembly/source/optimization) +4. Once consent is given (persisted for the session), Claude analyzes the code and assembly relationship +5. The markdown-formatted explanation appears with syntax highlighting +6. Responses are cached client-side (LRU, 200KB limit) and server-side to reduce API costs +7. Use the reload button to bypass caches and get fresh explanations + +## Configuration + +Add the API endpoint URL to `compiler-explorer.*.properties`: + +```ini +explainApiEndpoint=https://api.compiler-explorer.com/explain +``` + +The explain button appears automatically when configured. + +## Privacy Notice + +- Source code and compilation output are sent to Anthropic's Claude API after explicit user consent +- Consent is remembered for the browser session (not stored in cookies/localStorage) +- Anthropic does not use the data for model training +- Code containing `no-ai` (case-insensitive) is never sent to the API +- Compiler Explorer's privacy policy covers Claude Explain usage + +## Technical Implementation + +**Server-side**: Single property configuration (API endpoint). Server code: https://github.com/compiler-explorer/explain + +**Client-side**: +- `ExplainView` class (`static/panes/explain-view.ts`) handles UI, consent, API requests, and caching +- `explain-view-utils.ts` contains testable business logic (validation, formatting, request building) +- Uses `marked` library for markdown rendering with syntax highlighting +- LRU cache (200KB limit) shared across all explain views in the session +- Theme-aware styling with responsive layout and font scaling + +**Features**: +- Loading states with animated spinner +- Error handling with helpful messages +- Audience/explanation type selectors with Bootstrap popovers +- Status bar showing model, token usage, cost estimates, and cache status +- Session-persistent consent and user preferences +- Reload button to bypass all caches + +**Testing**: +- Comprehensive Cypress E2E tests covering UI interactions, consent flow, API mocking, caching behavior, and error handling +- Tests verify explain pane functionality, theme persistence, and proper handling of compilation states + +## API Integration + +**GET /** - Fetch available options: +```json +{ + "audience": [ + {"value": "beginner", "description": "Simple language, explains technical terms"}, + {"value": "intermediate", "description": "Focuses on compiler behavior and choices"}, + {"value": "expert", "description": "Technical terminology, advanced optimizations"} + ], + "explanation": [ + {"value": "assembly", "description": "Explains assembly instructions and purpose"}, + {"value": "source", "description": "Maps source code constructs to assembly"}, + {"value": "optimization", "description": "Explains compiler optimizations and transformations"} + ] +} +``` + +**POST /** - Generate explanation: +```json +{ + "language": "c++", + "compiler": "GCC 13.2", + "code": "Source code", + "compilationOptions": ["-O2", "-std=c++20"], + "instructionSet": "amd64", + "asm": ["Assembly output lines"], + "audience": "intermediate", + "explanation": "optimization", + "bypassCache": false +} +``` + +Optional fields: `audience` (default: "beginner"), `explanation` (default: "assembly"), `bypassCache` (default: false) + +Response: +```json +{ + "status": "success", + "explanation": "Markdown-formatted explanation", + "model": "claude-3-sonnet", + "usage": {"inputTokens": 500, "outputTokens": 300, "totalTokens": 800}, + "cost": {"inputCost": 0.0015, "outputCost": 0.0045, "totalCost": 0.006}, + "cached": false +} +``` + +## Caching + +**Multi-level caching** reduces API costs and improves response times: + +- **Client-side**: LRU cache, cache key from request payload hash +- **Server-side**: Shared cache across users, indicated by `cached: true` in response +- **Cache bypass**: Reload button sends `bypassCache: true` for fresh generation +- **Status display**: Shows cache state, models, token usage and cost estimates + +## Limitations + +- May not explain every compiler optimization or assembly pattern +- Large assemblies may be truncated before sending to API +- Requires internet connection for external API access +- One explain view per compiler at a time \ No newline at end of file diff --git a/docs/Compiler-Args-Debugging.md b/docs/Compiler-Args-Debugging.md new file mode 100644 index 000000000..02fe93b70 --- /dev/null +++ b/docs/Compiler-Args-Debugging.md @@ -0,0 +1,172 @@ +# Compiler Arguments Debugging Tool + +## Overview +`compiler-args-app.ts` is a standalone debugging utility for testing and inspecting compiler argument parsing in Compiler Explorer. It allows you to run the argument parser for different compilers and see what arguments CE can extract and understand. + +## Running the Tool + +### Basic Usage +```bash +node --import tsx compiler-args-app.ts \ + --parser \ + --exe \ + [--padding ] \ + [--debug] +``` + +### Parameters +- `--parser ` (required): The compiler parser type to use +- `--exe ` (required): Path to the compiler executable +- `--padding ` (optional): Padding for output formatting (default: 40) +- `--debug` (optional): Enable debug output for troubleshooting + +**Note:** Arguments should NOT use equals signs (=). Use spaces instead: `--parser gcc` not `--parser=gcc` + +## Example Commands + +### Debug GCC Argument Parsing +```bash +node --import tsx compiler-args-app.ts \ + --parser gcc \ + --exe /opt/compiler-explorer/gcc-14.2.0/bin/g++ \ + --debug +``` + +### Debug Clang with Custom Padding +```bash +node --import tsx compiler-args-app.ts \ + --parser clang \ + --exe /opt/compiler-explorer/clang-19.1.0/bin/clang++ \ + --padding 50 +``` + +### Debug Rust Compiler +```bash +node --import tsx compiler-args-app.ts \ + --parser rust \ + --exe /opt/compiler-explorer/rust-1.80.0/bin/rustc +``` + +### Debug Go Compiler +```bash +node --import tsx compiler-args-app.ts \ + --parser golang \ + --exe /opt/compiler-explorer/golang-1.24.2/go/bin/go +``` + +### Supported Parser Types +- `gcc` - GNU Compiler Collection +- `clang` - Clang/LLVM +- `ldc` - LDC (D Language) +- `erlang` - Erlang +- `pascal` - Pascal compilers +- `ispc` - Intel SPMD Program Compiler +- `java` - Java +- `kotlin` - Kotlin +- `scala` - Scala +- `vc` - Visual C++ +- `rust` - Rust +- `mrustc` - mrustc +- `num` - Nim +- `crystal` - Crystal +- `ts` - TypeScript Native +- `turboc` - Turbo C +- `toit` - Toit +- `circle` - Circle +- `ghc` - Glasgow Haskell Compiler +- `tendra` - TenDRA +- `golang` - Go +- `zig` - Zig + +New parser types have to be added manually to the `compilerParsers` type list in `compiler-args-app.ts` + +## Output Interpretation + +The tool provides several types of information: + +### 1. Available Arguments +Lists all compiler arguments that were successfully parsed, showing: +- The argument flag (e.g., `-O2`, `--std=c++20`) +- A description of what the argument does + +### 2. Standard Versions (Stdvers) +Shows available language standard versions the compiler supports (e.g., C++11, C++14, C++17) + +### 3. Targets +Lists available compilation targets the compiler can generate code for + +### 4. Editions +Shows available editions (primarily for Rust compilers) + +### 5. Compiler Capabilities +Reports on specific compiler features: +- `supportsOptOutput`: Whether optimization output is supported +- `supportsStackUsageOutput`: Whether stack usage reporting is supported +- `optPipeline`: Optimization pipeline information +- `supportsGccDump`: Whether GCC dump output is supported + +### 6. Target Support Detection +The tool also reports which target specification format the compiler uses: +- `supportsTargetIs`: Uses `--target=` +- `supportsTarget`: Uses `--target ` +- `supportsHyphenTarget`: Uses `-target ` +- `supportsMarch`: Uses `--march=` + +## Debugging Tips + +### 1. Use Debug Mode +Add `--debug` to see detailed parsing information and any errors that occur during argument extraction. + +### 2. Check Parser Output +If arguments aren't being detected correctly: +- Verify the compiler executable path is correct +- Ensure the parser type matches the compiler type +- Check if the compiler requires special environment variables + +### 3. Common Issues + +**Empty or Missing Arguments** +- The compiler may not support the help flag format the parser expects +- Try running the compiler manually with `--help` to see its output format + +**Parser Crashes** +- Enable debug mode to see the exact error +- Check that the compiler executable has execute permissions +- Ensure required libraries are available (use `ldd` to check dependencies) + +**Incorrect Parser Type** +- Using wrong parser (e.g., `gcc` parser for a `clang` compiler) may work partially but miss specific features +- Always match the parser to the actual compiler type + +### 4. Testing Custom Compilers +When adding support for a new compiler: +1. First run with an existing similar parser to see what works +2. Examine the raw help output to understand the format +3. Create a custom parser if needed in `lib/compilers/argument-parsers.ts` +4. Add the custom parser to the `compilerParsers` type list in `compiler-args-app.ts` + +### 5. Environment Considerations +- The tool uses the current environment variables and working directory +- Some compilers may require specific environment setup (PATH, LD_LIBRARY_PATH, etc.) +- Julia compiler requires the wrapper script path to be set correctly + +## Integration with CE Development + +This tool is useful when: +- Adding support for new compiler versions +- Debugging why certain compiler options aren't appearing in the UI +- Understanding what arguments CE can extract from a compiler +- Testing custom argument parsers +- Verifying compiler configuration + +The parsed arguments are used by CE to: +- Determine available optimization levels and flags +- Configure language standard options +- Detect supported architectures and target platforms +- Enable special compiler features based on flag availability: + - Optimization pipeline viewer (`optPipeline`) when optimization output flags are detected + - GCC tree/RTL dumps (`supportsGccDump`) when dump flags are found + - Stack usage analysis when stack output flags are present + - Intel syntax support when relevant flags are detected + - CFG (Control Flow Graph) support based on available dump options +- Set compiler properties that control UI features and compilation behavior diff --git a/docs/Privacy.md b/docs/Privacy.md index fccbff7cb..ee38f4963 100644 --- a/docs/Privacy.md +++ b/docs/Privacy.md @@ -2,7 +2,7 @@ _This is a summary of our Privacy policy, not a legal document, and might be incomplete._ -_For the full Privacy policy, see `static/policies/privacy.html`, or visit https://godbolt.org/#privacy_ +_For the full Privacy policy, see `static/generated/privacy.pug`, or visit https://godbolt.org/#privacy_ The main Compiler Explorer site (at https://godbolt.org/) has a cookie and privacy policy, and it's expected that any changes to the code are in compliance with those policies. It's worth taking a look at them if you're touching any area @@ -24,12 +24,23 @@ short links). All this makes perfect sense and would probably be done anyway, as We anonymise IP addresses so there's no exact mapping back to an individual using an IP. Not that it's trivial to map an IP to a user anyway. -We shouldn't store data forever: our web logs are set to delete after a few months. +We shouldn't store data forever: our web logs are set to delete after 32 days. Amazon infrastructure logs +(separate from our web logs) also contain full IP addresses and are kept for 32 days. Compilation analytics logs +are kept for up to 1 year - these contain hashed source code (not reversible), compiler options, and usage patterns +to help us improve the service. Lambda and API Gateway logs are kept for 7-14 days. Short URLs do turn up in the web logs: from the short URL of course one can easily extract the source code embedded in that short URL. Users are notified of this in the privacy policy. The ultimate recourse for users concerned about this is to not use the main Compiler Explorer but instead run their own local service, which is relatively straightforward. +We also integrate with third-party services with user consent: Claude Explain sends code to Anthropic for analysis, and +we use Sentry for error reporting (which keeps IP and browser info for up to 90 days - note this is controlled by Sentry's +retention settings, not our code). Users can control whether their code is stored for diagnostic purposes through a +setting that defaults to enabled but can be disabled. + +Important: The actual retention periods are configured in our terraform infrastructure, not in the application code. +Always verify that the privacy policy matches the terraform configuration when making changes. + ### Admins A very small group of people have administrator rights on the public Compiler Explorer. Those individuals can: diff --git a/etc/config/ada.amazon.properties b/etc/config/ada.amazon.properties index 6920012b2..dd5ae364c 100644 --- a/etc/config/ada.amazon.properties +++ b/etc/config/ada.amazon.properties @@ -1,13 +1,13 @@ # Default settings for Ada compilers=&gnat:&gnatcross -defaultCompiler=gnat151 +defaultCompiler=gnat152 versionFlag=--version compilerType=ada ############################### # GCC (as in GNU Compiler Collection) for x86 -group.gnat.compilers=&gnatassert:gnat82:gnat95:gnat102:gnat104:gnat105:gnat111:gnat112:gnat113:gnat114:gnat121:gnat122:gnat123:gnat124:gnat125:gnat131:gnat132:gnat133:gnat134:gnat141:gnat142:gnat143:gnat151:gnatsnapshot +group.gnat.compilers=&gnatassert:gnat82:gnat95:gnat102:gnat104:gnat105:gnat111:gnat112:gnat113:gnat114:gnat121:gnat122:gnat123:gnat124:gnat125:gnat131:gnat132:gnat133:gnat134:gnat141:gnat142:gnat143:gnat151:gnat152:gnatsnapshot group.gnat.intelAsm=-masm=intel group.gnat.groupName=X86-64 GNAT group.gnat.baseName=x86-64 gnat @@ -65,9 +65,10 @@ compiler.gnat142.exe=/opt/compiler-explorer/gcc-14.2.0/bin/gnatmake compiler.gnat142.semver=14.2 compiler.gnat143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/gnatmake compiler.gnat143.semver=14.3 - compiler.gnat151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gnatmake compiler.gnat151.semver=15.1 +compiler.gnat152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gnatmake +compiler.gnat152.semver=15.2 compiler.gnatsnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/gnatmake compiler.gnatsnapshot.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt @@ -75,7 +76,7 @@ compiler.gnatsnapshot.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump compiler.gnatsnapshot.semver=(trunk) ## GNAT x86 build with "assertions" (--enable-checking=XXX) -group.gnatassert.compilers=gnat104assert:gnat105assert:gnat111assert:gnat112assert:gnat113assert:gnat114assert:gnat121assert:gnat122assert:gnat123assert:gnat124assert:gnat125assert:gnat131assert:gnat132assert:gnat133assert:gnat134assert:gnat141assert:gnat142assert:gnat143assert:gnat151assert +group.gnatassert.compilers=gnat104assert:gnat105assert:gnat111assert:gnat112assert:gnat113assert:gnat114assert:gnat121assert:gnat122assert:gnat123assert:gnat124assert:gnat125assert:gnat131assert:gnat132assert:gnat133assert:gnat134assert:gnat141assert:gnat142assert:gnat143assert:gnat151assert:gnat152assert group.gnatassert.groupName=GCC x86-64 (assertions) compiler.gnat104assert.exe=/opt/compiler-explorer/gcc-assertions-10.4.0/bin/gnatmake @@ -116,7 +117,8 @@ compiler.gnat143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/gnat compiler.gnat143assert.semver=14.3 (assertions) compiler.gnat151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gnatmake compiler.gnat151assert.semver=15.1 (assertions) - +compiler.gnat152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gnatmake +compiler.gnat152assert.semver=15.2 (assertions) ################################ # Cross GNAT @@ -131,7 +133,7 @@ group.gnatcross.compilerCategories=gcc ################################ # GNAT for loongarch64 -group.gnatloongarch64.compilers=gnatloongarch641410:gnatloongarch641420:gnatloongarch641430:gnatloongarch641510 +group.gnatloongarch64.compilers=gnatloongarch641410:gnatloongarch641420:gnatloongarch641430:gnatloongarch641510:gnatloongarch641520 group.gnatloongarch64.groupName=LOONGARCH64 GNAT group.gnatloongarch64.baseName=loongarch64 gnat @@ -155,6 +157,11 @@ compiler.gnatloongarch641510.semver=15.1.0 compiler.gnatloongarch641510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.gnatloongarch641510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.gnatloongarch641520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-gnatmake +compiler.gnatloongarch641520.semver=15.2.0 +compiler.gnatloongarch641520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.gnatloongarch641520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ################################ # GNAT for sparc-leon group.gnatsparcleons.compilers=gnatsparcleon1310:gnatsparcleon1320:gnatsparcleon1330:gnatsparcleon1340:gnatsparcleon1410:gnatsparcleon1420:gnatsparcleon1430 @@ -198,7 +205,7 @@ compiler.gnatsparcleon1430.demangler=/opt/compiler-explorer/sparc-leon/gcc-14.3. ################################ # GNAT for sparc -group.gnatsparcs.compilers=gnatsparc1220:gnatsparc1230:gnatsparc1240:gnatsparc1250:gnatsparc1310:gnatsparc1320:gnatsparc1330:gnatsparc1340:gnatsparc1410:gnatsparc1420:gnatsparc1430:gnatsparc1510 +group.gnatsparcs.compilers=gnatsparc1220:gnatsparc1230:gnatsparc1240:gnatsparc1250:gnatsparc1310:gnatsparc1320:gnatsparc1330:gnatsparc1340:gnatsparc1410:gnatsparc1420:gnatsparc1430:gnatsparc1510:gnatsparc1520 group.gnatsparcs.groupName=SPARC GNAT group.gnatsparcs.baseName=sparc gnat @@ -262,9 +269,14 @@ compiler.gnatsparc1510.semver=15.1.0 compiler.gnatsparc1510.objdumper=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump compiler.gnatsparc1510.demangler=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt +compiler.gnatsparc1520.exe=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-gnatmake +compiler.gnatsparc1520.semver=15.2.0 +compiler.gnatsparc1520.objdumper=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump +compiler.gnatsparc1520.demangler=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt + ################################ # GNAT for sparc64 -group.gnatsparc64s.compilers=gnatsparc641220:gnatsparc641230:gnatsparc641240:gnatsparc641250:gnatsparc641310:gnatsparc641320:gnatsparc641330:gnatsparc641340:gnatsparc641410:gnatsparc641420:gnatsparc641430:gnatsparc641510 +group.gnatsparc64s.compilers=gnatsparc641220:gnatsparc641230:gnatsparc641240:gnatsparc641250:gnatsparc641310:gnatsparc641320:gnatsparc641330:gnatsparc641340:gnatsparc641410:gnatsparc641420:gnatsparc641430:gnatsparc641510:gnatsparc641520 group.gnatsparc64s.groupName=SPARC64 GNAT group.gnatsparc64s.baseName=sparc64 gnat @@ -328,9 +340,14 @@ compiler.gnatsparc641510.semver=15.1.0 compiler.gnatsparc641510.objdumper=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump compiler.gnatsparc641510.demangler=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt +compiler.gnatsparc641520.exe=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-gnatmake +compiler.gnatsparc641520.semver=15.2.0 +compiler.gnatsparc641520.objdumper=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump +compiler.gnatsparc641520.demangler=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt + ################################ # GNAT for riscv64 -group.gnatriscv64.compilers=gnatriscv64103:gnatriscv64112:gnatriscv641230:gnatriscv641240:gnatriscv641250:gnatriscv641310:gnatriscv641320:gnatriscv641330:gnatriscv641340:gnatriscv641410:gnatriscv641420:gnatriscv641430:gnatriscv641510 +group.gnatriscv64.compilers=gnatriscv64103:gnatriscv64112:gnatriscv641230:gnatriscv641240:gnatriscv641250:gnatriscv641310:gnatriscv641320:gnatriscv641330:gnatriscv641340:gnatriscv641410:gnatriscv641420:gnatriscv641430:gnatriscv641510:gnatriscv641520 group.gnatriscv64.groupName=RISCV64 GNAT group.gnatriscv64.baseName=riscv64 gnat group.gnatriscv64.instructionSet=riscv64 @@ -400,9 +417,14 @@ compiler.gnatriscv641510.semver=15.1.0 compiler.gnatriscv641510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.gnatriscv641510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.gnatriscv641520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gnatmake +compiler.gnatriscv641520.semver=15.2.0 +compiler.gnatriscv641520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.gnatriscv641520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + ################################ # GNAT for s390x -group.gnats390x.compilers=gnats390x1120:gnats390x1210:gnats390x1220:gnats390x1230:gnats390x1240:gnats390x1310:gnats390x1320:gnats390x1330:gnats390x1410:gnats390x1420:gnats390x1510:gnats390x1430:gnats390x1340:gnats390x1250 +group.gnats390x.compilers=gnats390x1120:gnats390x1210:gnats390x1220:gnats390x1230:gnats390x1240:gnats390x1310:gnats390x1320:gnats390x1330:gnats390x1410:gnats390x1420:gnats390x1510:gnats390x1430:gnats390x1340:gnats390x1250:gnats390x1520 group.gnats390x.groupName=S390X GNAT group.gnats390x.baseName=S390X GNAT @@ -473,6 +495,11 @@ compiler.gnats390x1510.semver=15.1.0 compiler.gnats390x1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.gnats390x1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.gnats390x1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-gnatmake +compiler.gnats390x1520.semver=15.2.0 +compiler.gnats390x1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.gnats390x1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ################################ # GNAT for ppc group.gnatppcs.compilers=&gnatppc:&gnatppc64:&gnatppc64le @@ -480,7 +507,7 @@ group.gnatppcs.instructionSet=powerpc ## POWER group.gnatppc.groupName=POWERPC GNAT -group.gnatppc.compilers=gnatppc1120:gnatppc1210:gnatppc1220:gnatppc1230:gnatppc1240:gnatppc1250:gnatppc1310:gnatppc1320:gnatppc1330:gnatppc1340:gnatppc1410:gnatppc1420:gnatppc1430:gnatppc1510 +group.gnatppc.compilers=gnatppc1120:gnatppc1210:gnatppc1220:gnatppc1230:gnatppc1240:gnatppc1250:gnatppc1310:gnatppc1320:gnatppc1330:gnatppc1340:gnatppc1410:gnatppc1420:gnatppc1430:gnatppc1510:gnatppc1520 group.gnatppc.baseName=powerpc gnat compiler.gnatppc1120.exe=/opt/compiler-explorer/powerpc/gcc-11.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gnatmake @@ -551,10 +578,15 @@ compiler.gnatppc1510.semver=15.1.0 compiler.gnatppc1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.gnatppc1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt +compiler.gnatppc1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gnatmake +compiler.gnatppc1520.semver=15.2.0 +compiler.gnatppc1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.gnatppc1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + ## POWER64 group.gnatppc64.groupName=POWER64 GNAT group.gnatppc64.baseName=powerpc64 gnat -group.gnatppc64.compilers=gnatppc64trunk:gnatppc641120:gnatppc641210:gnatppc641220:gnatppc641230:gnatppc641240:gnatppc641250:gnatppc641310:gnatppc641320:gnatppc641330:gnatppc641340:gnatppc641410:gnatppc641420:gnatppc641430:gnatppc641510 +group.gnatppc64.compilers=gnatppc64trunk:gnatppc641120:gnatppc641210:gnatppc641220:gnatppc641230:gnatppc641240:gnatppc641250:gnatppc641310:gnatppc641320:gnatppc641330:gnatppc641340:gnatppc641410:gnatppc641420:gnatppc641430:gnatppc641510:gnatppc641520 compiler.gnatppc641120.exe=/opt/compiler-explorer/powerpc64/gcc-11.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gnatmake compiler.gnatppc641120.demangler=/opt/compiler-explorer/powerpc64/gcc-11.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt @@ -624,6 +656,11 @@ compiler.gnatppc641510.semver=15.1.0 compiler.gnatppc641510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.gnatppc641510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.gnatppc641520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gnatmake +compiler.gnatppc641520.semver=15.2.0 +compiler.gnatppc641520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.gnatppc641520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.gnatppc64trunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gnatmake compiler.gnatppc64trunk.semver=trunk compiler.gnatppc64trunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump @@ -632,7 +669,7 @@ compiler.gnatppc64trunk.demangler=/opt/compiler-explorer/powerpc64/gcc-trunk/pow ## POWER64LE group.gnatppc64le.groupName=POWER64LE GNAT group.gnatppc64le.baseName=powerpc64le gnat -group.gnatppc64le.compilers=gnatppc64le1120:gnatppc64le1210:gnatppc64le1220:gnatppc64le1230:gnatppc64le1310:gnatppc64le1320:gnatppc64letrunk:gnatppc64le1410:gnatppc64le1330:gnatppc64le1240:gnatppc64le1420:gnatppc64le1510:gnatppc64le1430:gnatppc64le1340:gnatppc64le1250 +group.gnatppc64le.compilers=gnatppc64le1120:gnatppc64le1210:gnatppc64le1220:gnatppc64le1230:gnatppc64le1310:gnatppc64le1320:gnatppc64letrunk:gnatppc64le1410:gnatppc64le1330:gnatppc64le1240:gnatppc64le1420:gnatppc64le1510:gnatppc64le1430:gnatppc64le1340:gnatppc64le1250:gnatppc64le1520 compiler.gnatppc64le1120.exe=/opt/compiler-explorer/powerpc64le/gcc-11.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gnatmake compiler.gnatppc64le1120.demangler=/opt/compiler-explorer/powerpc64le/gcc-11.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt @@ -702,6 +739,11 @@ compiler.gnatppc64le1510.semver=15.1.0 compiler.gnatppc64le1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.gnatppc64le1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.gnatppc64le1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gnatmake +compiler.gnatppc64le1520.semver=15.2.0 +compiler.gnatppc64le1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.gnatppc64le1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.gnatppc64letrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gnatmake compiler.gnatppc64letrunk.semver=trunk compiler.gnatppc64letrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump @@ -715,7 +757,7 @@ group.gnatmipss.compilers=&gnatmips:&gnatmips64 ## MIPS group.gnatmips.groupName=MIPS GNAT group.gnatmips.baseName=mips gnat -group.gnatmips.compilers=gnatmips1120:gnatmips1210:gnatmips1220:gnatmips1230:gnatmips1240:gnatmips1250:gnatmips1310:gnatmips1320:gnatmips1330:gnatmips1340:gnatmips1410:gnatmips1420:gnatmips1430:gnatmips1510 +group.gnatmips.compilers=gnatmips1120:gnatmips1210:gnatmips1220:gnatmips1230:gnatmips1240:gnatmips1250:gnatmips1310:gnatmips1320:gnatmips1330:gnatmips1340:gnatmips1410:gnatmips1420:gnatmips1430:gnatmips1510:gnatmips1520 compiler.gnatmips1120.exe=/opt/compiler-explorer/mips/gcc-11.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gnatmake compiler.gnatmips1120.demangler=/opt/compiler-explorer/mips/gcc-11.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt @@ -785,10 +827,15 @@ compiler.gnatmips1510.semver=15.1.0 compiler.gnatmips1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.gnatmips1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.gnatmips1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gnatmake +compiler.gnatmips1520.semver=15.2.0 +compiler.gnatmips1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.gnatmips1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ## MIPS64 group.gnatmips64.groupName=MIPS64 GNAT group.gnatmips64.baseName=mips64 gnat -group.gnatmips64.compilers=gnatmips641120:gnatmips641210:gnatmips641220:gnatmips641230:gnatmips641240:gnatmips641250:gnatmips641310:gnatmips641320:gnatmips641330:gnatmips641340:gnatmips641410:gnatmips641420:gnatmips641430:gnatmips641510 +group.gnatmips64.compilers=gnatmips641120:gnatmips641210:gnatmips641220:gnatmips641230:gnatmips641240:gnatmips641250:gnatmips641310:gnatmips641320:gnatmips641330:gnatmips641340:gnatmips641410:gnatmips641420:gnatmips641430:gnatmips641510:gnatmips641520 compiler.gnatmips641120.exe=/opt/compiler-explorer/mips64/gcc-11.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gnatmake compiler.gnatmips641120.demangler=/opt/compiler-explorer/mips64/gcc-11.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt @@ -858,9 +905,14 @@ compiler.gnatmips641510.semver=15.1.0 compiler.gnatmips641510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.gnatmips641510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.gnatmips641520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gnatmake +compiler.gnatmips641520.semver=15.2.0 +compiler.gnatmips641520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.gnatmips641520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ################################ # GNAT for arm64 -group.gnatarm64.compilers=gnatarm641210:gnatarm641220:gnatarm641230:gnatarm641240:gnatarm641250:gnatarm641310:gnatarm641320:gnatarm641330:gnatarm641340:gnatarm641410:gnatarm641420:gnatarm641430:gnatarm641510 +group.gnatarm64.compilers=gnatarm641210:gnatarm641220:gnatarm641230:gnatarm641240:gnatarm641250:gnatarm641310:gnatarm641320:gnatarm641330:gnatarm641340:gnatarm641410:gnatarm641420:gnatarm641430:gnatarm641510:gnatarm641520 group.gnatarm64.groupName=ARM64 GNAT group.gnatarm64.baseName=arm64 gnat group.gnatarm64.instructionSet=aarch64 @@ -929,9 +981,14 @@ compiler.gnatarm641510.semver=15.1.0 compiler.gnatarm641510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.gnatarm641510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.gnatarm641520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gnatmake +compiler.gnatarm641520.semver=15.2.0 +compiler.gnatarm641520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.gnatarm641520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + ################################ # GNAT for arm -group.gnatarm.compilers=gnatarm103:gnatarm112:gnatarm1310:gnatarm1320:gnatarm1330:gnatarm1340:gnatarm1410:gnatarm1420:gnatarm1430:gnatarm1510 +group.gnatarm.compilers=gnatarm103:gnatarm112:gnatarm1310:gnatarm1320:gnatarm1330:gnatarm1340:gnatarm1410:gnatarm1420:gnatarm1430:gnatarm1510:gnatarm1520 group.gnatarm.groupName=ARM GNAT group.gnatarm.baseName=arm gnat group.gnatarm.instructionSet=arm32 @@ -986,9 +1043,14 @@ compiler.gnatarm1510.semver=15.1.0 compiler.gnatarm1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.gnatarm1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.gnatarm1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gnatmake +compiler.gnatarm1520.semver=15.2.0 +compiler.gnatarm1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.gnatarm1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + ################################ # GNAT for HPPA -group.gnathppa.compilers=gnathppa1420:gnathppa1430:gnathppa1510 +group.gnathppa.compilers=gnathppa1420:gnathppa1430:gnathppa1510:gnathppa1520 group.gnathppa.groupName=HPPA GNAT group.gnathppa.baseName=hppa gnat group.gnathppa.isSemVer=true @@ -1010,6 +1072,11 @@ compiler.gnathppa1510.semver=15.1.0 compiler.gnathppa1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.gnathppa1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.gnathppa1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-gnatmake +compiler.gnathppa1520.semver=15.2.0 +compiler.gnathppa1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.gnathppa1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + ################################# ################################# # Installed libs (See c++.amazon.properties for a scheme of libs group) diff --git a/etc/config/c++.amazon.properties b/etc/config/c++.amazon.properties index d9d3da393..db3673918 100644 --- a/etc/config/c++.amazon.properties +++ b/etc/config/c++.amazon.properties @@ -1,8 +1,8 @@ -compilers=&gcc86:&icc:&icx:&clang:&clangx86trunk:&clang-rocm:&mosclang-trunk:&rvclang:&wasmclang:&loongarch-clang:&cl:&cross:&ellcc:&zapcc:&djggp:&armclang32:&armclang64:&zigcxx:&cxx6502:&nvcxx_arm_cxx:godbolt.org@443/gpu:godbolt.org@443/winprod:&hexagon-clang:&edg:&vast:&qnx:&z80-clang:&clad-clang +compilers=&gcc86:&icc:&icx:&clang:&clangx86trunk:&clang-rocm:&mosclang-trunk:&rvclang:&wasmclang:&loongarch-clang:&cross:&ellcc:&zapcc:&djggp:&armclang32:&armclang64:&zigcxx:&cxx6502:&nvcxx_arm_cxx:godbolt.org@443/gpu:godbolt.org@443/winprod:&hexagon-clang:&edg:&vast:&qnx:&z80-clang:&clad-clang # Disabled: nvcxx_x86_cxx # The disabled groups are actually used in the c++.gpu.properties. One day these might exist on both servers, so I want # to keep them in the same place. -defaultCompiler=g151 +defaultCompiler=g152 # We use the llvm-trunk demangler for all c/c++ compilers, as c++filt tends to lag behind demangler=/opt/compiler-explorer/clang-trunk/bin/llvm-cxxfilt objdumper=/opt/compiler-explorer/gcc-14.2.0/bin/objdump @@ -18,7 +18,7 @@ llvmDisassembler=/opt/compiler-explorer/clang-18.1.0/bin/llvm-dis ############################### # GCC for x86 -group.gcc86.compilers=&gcc86assert:g346:g404:g412:g447:g453:g464:g471:g472:g473:g474:g481:g482:g483:g484:g485:g490:g491:g492:g493:g494:g510:g520:g530:g540:g550:g6:g62:g63:g64:g65:g71:g72:g73:g74:g75:g81:g82:g83:g84:g85:g91:g92:g93:g94:g95:g101:g102:g103:g104:g105:g111:g112:g113:g114:g121:g122:g123:g124:g125:g131:g132:g133:g134:g141:g142:g143:g151:gsnapshot:gcontracts-trunk:gcontract-labels-trunk:gcontracts-nonattr-trunk:gcxx-modules-trunk:gcxx-coroutines-trunk:gcc-embed-trunk:gcc-static-analysis-trunk +group.gcc86.compilers=&gcc86assert:g346:g404:g412:g447:g453:g464:g471:g472:g473:g474:g481:g482:g483:g484:g485:g490:g491:g492:g493:g494:g510:g520:g530:g540:g550:g6:g62:g63:g64:g65:g71:g72:g73:g74:g75:g81:g82:g83:g84:g85:g91:g92:g93:g94:g95:g101:g102:g103:g104:g105:g111:g112:g113:g114:g121:g122:g123:g124:g125:g131:g132:g133:g134:g141:g142:g143:g151:g152:gsnapshot:gcontracts-trunk:gcontract-labels-trunk:gcontracts-nonattr-trunk:gcxx-modules-trunk:gcxx-coroutines-trunk:gcc-embed-trunk:gcc-static-analysis-trunk group.gcc86.groupName=GCC x86-64 group.gcc86.instructionSet=amd64 group.gcc86.baseName=x86-64 gcc @@ -187,6 +187,8 @@ compiler.g143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/g++ compiler.g143.semver=14.3 compiler.g151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/g++ compiler.g151.semver=15.1 +compiler.g152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/g++ +compiler.g152.semver=15.1 compiler.gsnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/g++ compiler.gsnapshot.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt @@ -248,7 +250,7 @@ compiler.g71.needsMulti=true compiler.g72.needsMulti=true ## GCC x86 build with "assertions" (--enable-checking=XXX) -group.gcc86assert.compilers=g103assert:g104assert:g105assert:g111assert:g112assert:g113assert:g114assert:g121assert:g122assert:g123assert:g124assert:g125assert:g131assert:g132assert:g133assert:g134assert:g141assert:g142assert:g143assert:g151assert +group.gcc86assert.compilers=g103assert:g104assert:g105assert:g111assert:g112assert:g113assert:g114assert:g121assert:g122assert:g123assert:g124assert:g125assert:g131assert:g132assert:g133assert:g134assert:g141assert:g142assert:g143assert:g151assert:g152assert group.gcc86assert.groupName=GCC x86-64 (assertions) compiler.g103assert.exe=/opt/compiler-explorer/gcc-assertions-10.3.0/bin/g++ @@ -291,6 +293,8 @@ compiler.g143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/g++ compiler.g143assert.semver=14.3 (assertions) compiler.g151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/g++ compiler.g151assert.semver=15.1 (assertions) +compiler.g152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/g++ +compiler.g152assert.semver=15.2 (assertions) ################################ # Clang for x86 @@ -814,7 +818,7 @@ group.armclang32.licensePreamble=The LLVM Project is under the Apache License v2 group.armclang32.compilerCategories=clang group.armclang32.demangler=/opt/compiler-explorer/clang-trunk/bin/llvm-cxxfilt -compiler.armv7-clang2010.exe=/opt/compiler-explorer/clang-2-.1.0/bin/clang++ +compiler.armv7-clang2010.exe=/opt/compiler-explorer/clang-20.1.0/bin/clang++ compiler.armv7-clang2010.semver=20.1.0 compiler.armv7-clang2010.options=-target arm-unknown-linux-gnueabihf --gcc-toolchain=/opt/compiler-explorer/arm/gcc-14.2.0/arm-unknown-linux-gnueabihf --sysroot=/opt/compiler-explorer/arm/gcc-14.2.0/arm-unknown-linux-gnueabihf/arm-unknown-linux-gnueabihf/sysroot compiler.armv7-clang1910.exe=/opt/compiler-explorer/clang-19.1.0/bin/clang++ @@ -1241,7 +1245,7 @@ compiler.hexagonclang1605.compilerCategories=clang-hexagon ################################ # Clang for clad -group.clad-clang.compilers=clang1810_clad180:clang1910_clad190:clang2010_clad1100:clad_trunk +group.clad-clang.compilers=clang1810_clad180:clang1910_clad190:clang2010_clad1100:clang2010_clad200:clad_trunk group.clad-clang.intelAsm=-mllvm --x86-asm-syntax=intel group.clad-clang.groupName=Clad Clang group.clad-clang.instructionSet=amd64 @@ -1268,6 +1272,11 @@ compiler.clang2010_clad1100.name=clad v1.10 (clang 20.1.0) compiler.clang2010_clad1100.options=--gcc-toolchain=/opt/compiler-explorer/gcc-13.2.0 -fplugin=/opt/compiler-explorer/clang-plugins/clad-1.10-clang-20.1.0/lib/clad.so -I/opt/compiler-explorer/clang-plugins/clad-1.10-clang-20.1.0/include compiler.clang2010_clad1100.ldPath=${exePath}/../lib|${exePath}/../lib/x86_64-unknown-linux-gnu compiler.clang2010_clad1100.debugPatched=true +compiler.clang2010_clad200.exe=/opt/compiler-explorer/clang-20.1.0/bin/clang++ +compiler.clang2010_clad200.name=clad v2.00 (clang 20.1.0) +compiler.clang2010_clad200.options=--gcc-toolchain=/opt/compiler-explorer/gcc-13.2.0 -fplugin=/opt/compiler-explorer/clang-plugins/clad-2.0-clang-20.1.0/lib/clad.so -I/opt/compiler-explorer/clang-plugins/clad-2.0-clang-20.1.0/include +compiler.clang2010_clad200.ldPath=${exePath}/../lib|${exePath}/../lib/x86_64-unknown-linux-gnu +compiler.clang2010_clad200.debugPatched=true compiler.clad_trunk.alias=clang1810_clad_trunk compiler.clad_trunk.exe=/opt/compiler-explorer/clang-20.1.0/bin/clang++ compiler.clad_trunk.name=clad trunk (clang 20.1.0) @@ -1614,7 +1623,7 @@ compiler.m68kclangtrunk.isNightly=true # GCC for m68k -group.gccm68k.compilers=m68kg1310:m68kg1320:m68kg1410:m68kg1330:m68kg1420:m68kg1510:m68kg1430:m68kg1340 +group.gccm68k.compilers=m68kg1310:m68kg1320:m68kg1410:m68kg1330:m68kg1420:m68kg1510:m68kg1430:m68kg1340:m68kg1520 group.gccm68k.supportsBinary=true group.gccm68k.supportsExecute=false group.gccm68k.baseName=M68K gcc @@ -1661,6 +1670,11 @@ compiler.m68kg1510.semver=15.1.0 compiler.m68kg1510.objdumper=/opt/compiler-explorer/m68k/gcc-15.1.0/m68k-unknown-elf/bin/m68k-unknown-elf-objdump compiler.m68kg1510.demangler=/opt/compiler-explorer/m68k/gcc-15.1.0/m68k-unknown-elf/bin/m68k-unknown-elf-c++filt +compiler.m68kg1520.exe=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-g++ +compiler.m68kg1520.semver=15.2.0 +compiler.m68kg1520.objdumper=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-objdump +compiler.m68kg1520.demangler=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-c++filt + ############################### # Cross for Tricore group.tricore.compilers=&gcctricore @@ -1683,7 +1697,7 @@ compiler.tricoreg1130.demangler=/opt/compiler-explorer/tricore/gcc-11.3.0/tricor group.hppa.compilers=&gcchppa # GCC for HPPA -group.gcchppa.compilers=hppag1420:hppag1430:hppag1510 +group.gcchppa.compilers=hppag1420:hppag1430:hppag1510:hppag1520 group.gcchppa.supportsBinary=true group.gcchppa.supportsExecute=false group.gcchppa.baseName=HPPA gcc @@ -1705,6 +1719,11 @@ compiler.hppag1510.semver=15.1.0 compiler.hppag1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.hppag1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.hppag1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-g++ +compiler.hppag1520.semver=15.2.0 +compiler.hppag1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.hppag1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + ############################### # Cross for BPF group.bpf.compilers=&gccbpf:&clangbpf @@ -1800,7 +1819,7 @@ compiler.bpfgtrunk.isNightly=true group.sparc.compilers=&gccsparc # GCC for SPARC -group.gccsparc.compilers=sparcg1220:sparcg1230:sparcg1240:sparcg1250:sparcg1310:sparcg1320:sparcg1330:sparcg1340:sparcg1410:sparcg1420:sparcg1430:sparcg1510 +group.gccsparc.compilers=sparcg1220:sparcg1230:sparcg1240:sparcg1250:sparcg1310:sparcg1320:sparcg1330:sparcg1340:sparcg1410:sparcg1420:sparcg1430:sparcg1510:sparcg1520 group.gccsparc.baseName=SPARC gcc group.gccsparc.groupName=SPARC GCC group.gccsparc.isSemVer=true @@ -1865,12 +1884,17 @@ compiler.sparcg1510.semver=15.1.0 compiler.sparcg1510.objdumper=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump compiler.sparcg1510.demangler=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt +compiler.sparcg1520.exe=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-g++ +compiler.sparcg1520.semver=15.2.0 +compiler.sparcg1520.objdumper=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump +compiler.sparcg1520.demangler=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt + ############################### # Cross for SPARC64 group.sparc64.compilers=&gccsparc64 # GCC for SPARC64 -group.gccsparc64.compilers=sparc64g1220:sparc64g1230:sparc64g1310:sparc64g1320:sparc64g1410:sparc64g1330:sparc64g1240:sparc64g1420:sparc64g1510:sparc64g1430:sparc64g1340:sparc64g1250 +group.gccsparc64.compilers=sparc64g1220:sparc64g1230:sparc64g1310:sparc64g1320:sparc64g1410:sparc64g1330:sparc64g1240:sparc64g1420:sparc64g1510:sparc64g1430:sparc64g1340:sparc64g1250:sparc64g1520 group.gccsparc64.baseName=SPARC64 gcc group.gccsparc64.groupName=SPARC64 GCC group.gccsparc64.isSemVer=true @@ -1935,12 +1959,17 @@ compiler.sparc64g1510.semver=15.1.0 compiler.sparc64g1510.objdumper=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump compiler.sparc64g1510.demangler=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt +compiler.sparc64g1520.exe=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-g++ +compiler.sparc64g1520.semver=15.2.0 +compiler.sparc64g1520.objdumper=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump +compiler.sparc64g1520.demangler=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt + ############################### # Cross for SPARC-LEON group.sparcleon.compilers=&gccsparcleon # GCC for SPARC-LEON -group.gccsparcleon.compilers=sparcleong1220:sparcleong1220-1:sparcleong1230:sparcleong1240:sparcleong1250:sparcleong1310:sparcleong1320:sparcleong1330:sparcleong1340:sparcleong1410:sparcleong1420:sparcleong1430:sparcleong1510 +group.gccsparcleon.compilers=sparcleong1220:sparcleong1220-1:sparcleong1230:sparcleong1240:sparcleong1250:sparcleong1310:sparcleong1320:sparcleong1330:sparcleong1340:sparcleong1410:sparcleong1420:sparcleong1430:sparcleong1510:sparcleong1520 group.gccsparcleon.baseName=SPARC LEON gcc group.gccsparcleon.groupName=SPARC LEON GCC group.gccsparcleon.isSemVer=true @@ -2007,6 +2036,11 @@ compiler.sparcleong1510.semver=15.1.0 compiler.sparcleong1510.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump compiler.sparcleong1510.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt +compiler.sparcleong1520.exe=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-g++ +compiler.sparcleong1520.semver=15.2.0 +compiler.sparcleong1520.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump +compiler.sparcleong1520.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt + compiler.sparcleong1220-1.exe=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-g++ compiler.sparcleong1220-1.semver=12.2.0 compiler.sparcleong1220-1.objdumper=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump @@ -2017,7 +2051,7 @@ compiler.sparcleong1220-1.demangler=/opt/compiler-explorer/sparc-leon/gcc-12.2.0 group.c6x.compilers=&gccc6x # GCC for TI C6x -group.gccc6x.compilers=c6xg1220:c6xg1230:c6xg1310:c6xg1320:c6xg1410:c6xg1330:c6xg1240:c6xg1420:c6xg1510:c6xg1430:c6xg1340:c6xg1250 +group.gccc6x.compilers=c6xg1220:c6xg1230:c6xg1310:c6xg1320:c6xg1410:c6xg1330:c6xg1240:c6xg1420:c6xg1510:c6xg1430:c6xg1340:c6xg1250:c6xg1520 group.gccc6x.baseName=TI C6x gcc group.gccc6x.groupName=TI C6x GCC group.gccc6x.isSemVer=true @@ -2082,6 +2116,11 @@ compiler.c6xg1510.semver=15.1.0 compiler.c6xg1510.objdumper=/opt/compiler-explorer/c6x/gcc-15.1.0/tic6x-elf/bin/tic6x-elf-objdump compiler.c6xg1510.demangler=/opt/compiler-explorer/c6x/gcc-15.1.0/tic6x-elf/bin/tic6x-elf-c++filt +compiler.c6xg1520.exe=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-g++ +compiler.c6xg1520.semver=15.2.0 +compiler.c6xg1520.objdumper=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-objdump +compiler.c6xg1520.demangler=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-c++filt + ############################### # Cross for loongarch64 group.loongarch64.compilers=&gccloongarch64 @@ -2089,7 +2128,7 @@ group.loongarch64.compilers=&gccloongarch64 # GCC for loongarch64 group.gccloongarch64.baseName=loongarch64 gcc group.gccloongarch64.groupName=loongarch64 gcc -group.gccloongarch64.compilers=loongarch64g1220:loongarch64g1230:loongarch64g1310:loongarch64g1320:loongarch64g1410:loongarch64g1330:loongarch64g1240:loongarch64g1420:loongarch64g1510:loongarch64g1430:loongarch64g1340:loongarch64g1250 +group.gccloongarch64.compilers=loongarch64g1220:loongarch64g1230:loongarch64g1310:loongarch64g1320:loongarch64g1410:loongarch64g1330:loongarch64g1240:loongarch64g1420:loongarch64g1510:loongarch64g1430:loongarch64g1340:loongarch64g1250:loongarch64g1520 group.gccloongarch64.isSemVer=true compiler.loongarch64g1220.exe=/opt/compiler-explorer/loongarch64/gcc-12.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-g++ @@ -2152,6 +2191,11 @@ compiler.loongarch64g1510.semver=15.1.0 compiler.loongarch64g1510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.loongarch64g1510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.loongarch64g1520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-g++ +compiler.loongarch64g1520.semver=15.2.0 +compiler.loongarch64g1520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.loongarch64g1520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ############################### # Cross for sh group.sh.compilers=&gccsh @@ -2159,7 +2203,7 @@ group.sh.compilers=&gccsh # GCC for sh group.gccsh.baseName=sh gcc group.gccsh.groupName=sh gcc -group.gccsh.compilers=shg494:shg950:shg1220:shg1230:shg1240:shg1250:shg1310:shg1320:shg1330:shg1340:shg1410:shg1420:shg1430:shg1510 +group.gccsh.compilers=shg494:shg950:shg1220:shg1230:shg1240:shg1250:shg1310:shg1320:shg1330:shg1340:shg1410:shg1420:shg1430:shg1510:shg1520 group.gccsh.isSemVer=true compiler.shg494.exe=/opt/compiler-explorer/sh/gcc-4.9.4/sh-unknown-elf/bin/sh-unknown-elf-g++ @@ -2232,6 +2276,11 @@ compiler.shg1510.semver=15.1.0 compiler.shg1510.objdumper=/opt/compiler-explorer/sh/gcc-15.1.0/sh-unknown-elf/bin/sh-unknown-elf-objdump compiler.shg1510.demangler=/opt/compiler-explorer/sh/gcc-15.1.0/sh-unknown-elf/bin/sh-unknown-elf-c++filt +compiler.shg1520.exe=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-g++ +compiler.shg1520.semver=15.2.0 +compiler.shg1520.objdumper=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-objdump +compiler.shg1520.demangler=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-c++filt + ############################### # Cross for s390x group.s390x.compilers=&gccs390x @@ -2239,7 +2288,7 @@ group.s390x.compilers=&gccs390x # GCC for s390x group.gccs390x.baseName=s390x gcc group.gccs390x.groupName=s390x gcc -group.gccs390x.compilers=gccs390x1120:s390xg1210:s390xg1220:s390xg1230:s390xg1310:s390xg1320:s390xg1410:s390xg1330:s390xg1240:s390xg1420:s390xg1510:s390xg1430:s390xg1340:s390xg1250 +group.gccs390x.compilers=gccs390x1120:s390xg1210:s390xg1220:s390xg1230:s390xg1310:s390xg1320:s390xg1410:s390xg1330:s390xg1240:s390xg1420:s390xg1510:s390xg1430:s390xg1340:s390xg1250:s390xg1520 group.gccs390x.isSemVer=true group.gccs390x.objdumper=/opt/compiler-explorer/s390x/gcc-11.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump @@ -2311,6 +2360,11 @@ compiler.s390xg1510.semver=15.1.0 compiler.s390xg1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.s390xg1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.s390xg1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-g++ +compiler.s390xg1520.semver=15.2.0 +compiler.s390xg1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.s390xg1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ############################### # Cross compilers for PPC group.ppcs.compilers=&ppc:&ppc64:&ppc64le @@ -2318,7 +2372,7 @@ group.ppcs.isSemVer=true group.ppcs.instructionSet=powerpc ## POWER -group.ppc.compilers=ppcg48:ppcg1120:ppcg1210:ppcg1220:ppcg1230:ppcg1240:ppcg1250:ppcg1310:ppcg1320:ppcg1330:ppcg1340:ppcg1410:ppcg1420:ppcg1430:ppcg1510 +group.ppc.compilers=ppcg48:ppcg1120:ppcg1210:ppcg1220:ppcg1230:ppcg1240:ppcg1250:ppcg1310:ppcg1320:ppcg1330:ppcg1340:ppcg1410:ppcg1420:ppcg1430:ppcg1510:ppcg1520 group.ppc.groupName=POWER GCC group.ppc.baseName=power gcc @@ -2394,10 +2448,15 @@ compiler.ppcg1510.semver=15.1.0 compiler.ppcg1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.ppcg1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt +compiler.ppcg1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-g++ +compiler.ppcg1520.semver=15.2.0 +compiler.ppcg1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.ppcg1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + ## POWER64 group.ppc64.groupName=POWER64 GCC group.ppc64.baseName=power64 gcc -group.ppc64.compilers=ppc64g8:ppc64g9:ppc64g1120:ppc64g1210:ppc64clang:ppc64g1220:ppc64g1230:ppc64g1310:ppc64g1320:ppc64gtrunk:ppc64g1410:ppc64g1330:ppc64g1240:ppc64g1420:ppc64g1510:ppc64g1430:ppc64g1340:ppc64g1250 +group.ppc64.compilers=ppc64g8:ppc64g9:ppc64g1120:ppc64g1210:ppc64clang:ppc64g1220:ppc64g1230:ppc64g1310:ppc64g1320:ppc64gtrunk:ppc64g1410:ppc64g1330:ppc64g1240:ppc64g1420:ppc64g1510:ppc64g1430:ppc64g1340:ppc64g1250:ppc64g1520 compiler.ppc64g8.exe=/opt/compiler-explorer/powerpc64/gcc-at12/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-g++ compiler.ppc64g8.objdumper=/opt/compiler-explorer/powerpc64/gcc-at12/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump @@ -2477,6 +2536,11 @@ compiler.ppc64g1510.semver=15.1.0 compiler.ppc64g1510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.ppc64g1510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.ppc64g1520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-g++ +compiler.ppc64g1520.semver=15.2.0 +compiler.ppc64g1520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.ppc64g1520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.ppc64gtrunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-g++ compiler.ppc64gtrunk.semver=trunk compiler.ppc64gtrunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump @@ -2496,7 +2560,7 @@ compiler.ppc64clang.compilerCategories=clang ## POWER64LE group.ppc64le.groupName=POWER64LE GCC -group.ppc64le.compilers=ppc64leg630:ppc64leg8:ppc64leg9:ppc64leg1120:ppc64leg1210:ppc64leclang:ppc64leg1220:ppc64leg1230:ppc64leg1310:ppc64leg1320:ppc64legtrunk:ppc64leg1410:ppc64leg1330:ppc64leg1240:ppc64leg1420:ppc64leg1510:ppc64leg1430:ppc64leg1340:ppc64leg1250 +group.ppc64le.compilers=ppc64leg630:ppc64leg8:ppc64leg9:ppc64leg1120:ppc64leg1210:ppc64leclang:ppc64leg1220:ppc64leg1230:ppc64leg1310:ppc64leg1320:ppc64legtrunk:ppc64leg1410:ppc64leg1330:ppc64leg1240:ppc64leg1420:ppc64leg1510:ppc64leg1430:ppc64leg1340:ppc64leg1250:ppc64leg1520 group.ppc64le.baseName=power64le gcc compiler.ppc64leg630.exe=/opt/compiler-explorer/powerpc64le/gcc-6.3.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-g++ @@ -2581,6 +2645,11 @@ compiler.ppc64leg1510.semver=15.1.0 compiler.ppc64leg1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.ppc64leg1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.ppc64leg1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-g++ +compiler.ppc64leg1520.semver=15.2.0 +compiler.ppc64leg1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.ppc64leg1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.ppc64legtrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-g++ compiler.ppc64legtrunk.semver=trunk compiler.ppc64legtrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump @@ -2608,7 +2677,7 @@ group.gccarm.includeFlag=-I # 32 bit group.gcc32arm.groupName=Arm 32-bit GCC group.gcc32arm.baseName=ARM GCC -group.gcc32arm.compilers=armhfg54:armg454:armg464:arm541:armg630:armg640:arm710:armg730:armg750:armg820:armce820:arm831:armg850:arm921:arm930:arm940:arm950:arm1020:arm1021:arm1030:arm1031_07:arm1031_10:arm1040:armg1050:arm1100:arm1120:arm1121:arm1130:armg1140:arm1210:armg1220:armg1230:armg1240:armg1250:armg1310:armg1320:armug1320:armg1330:armug1330:armg1340:armug1340:armg1410:armug1410:armg1420:armug1420:armg1430:armug1430:armg1510:armgtrunk +group.gcc32arm.compilers=armhfg54:armg454:armg464:arm541:armg630:armg640:arm710:armg730:armg750:armg820:armce820:arm831:armg850:arm921:arm930:arm940:arm950:arm1020:arm1021:arm1030:arm1031_07:arm1031_10:arm1040:armg1050:arm1100:arm1120:arm1121:arm1130:armg1140:arm1210:armg1220:armg1230:armg1240:armg1250:armg1310:armg1320:armug1320:armg1330:armug1330:armg1340:armug1340:armg1410:armug1410:armg1420:armug1420:armg1430:armug1430:armg1510:armug1510:armg1520:armug1520:armgtrunk group.gcc32arm.isSemVer=true group.gcc32arm.objdumper=/opt/compiler-explorer/arm/gcc-10.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump group.gcc32arm.instructionSet=arm32 @@ -2723,6 +2792,11 @@ compiler.armg1510.semver=15.1.0 compiler.armg1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.armg1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.armg1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-g++ +compiler.armg1520.semver=15.2.0 +compiler.armg1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.armg1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + compiler.armug1320.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-13.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-g++ compiler.armug1320.name=ARM GCC 13.2.0 (unknown-eabi) compiler.armug1320.semver=13.2.0 @@ -2759,6 +2833,18 @@ compiler.armug1430.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-14.3.0/a compiler.armug1430.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-14.3.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt compiler.armug1430.name=ARM GCC 14.3.0 (unknown-eabi) +compiler.armug1510.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-g++ +compiler.armug1510.semver=15.1.0 +compiler.armug1510.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-objdump +compiler.armug1510.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt +compiler.armug1510.name=ARM GCC 15.1.0 (unknown-eabi) + +compiler.armug1520.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-g++ +compiler.armug1520.semver=15.2.0 +compiler.armug1520.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-objdump +compiler.armug1520.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt +compiler.armug1520.name=ARM GCC 15.2.0 (unknown-eabi) + compiler.armce820.exe=/opt/compiler-explorer/arm-wince/gcc-ce-8.2.0/bin/arm-mingw32ce-g++ compiler.armce820.name=ARM gcc 8.2 (WinCE) compiler.armce820.semver=8.2.0 @@ -2825,7 +2911,7 @@ compiler.armgtrunk.isNightly=true # 64 bit group.gcc64arm.groupName=Arm 64-bit GCC -group.gcc64arm.compilers=aarchg54:arm64g494:arm64g550:arm64g630:arm64g640:arm64g730:arm64g750:arm64g820:arm64g850:arm64g930:arm64g940:arm64g950:arm64g1020:arm64g1030:arm64g1040:arm64g1100:arm64g1120:arm64g1130:arm64g1140:arm64g1210:arm64gtrunk:arm64g1220:arm64g1230:arm64g1310:arm64g1050:arm64g1320:arm64g1410:arm64g1330:arm64g1240:arm64g1420:arm64g1510:arm64g1430:arm64g1340:arm64g1250 +group.gcc64arm.compilers=aarchg54:arm64g494:arm64g550:arm64g630:arm64g640:arm64g730:arm64g750:arm64g820:arm64g850:arm64g930:arm64g940:arm64g950:arm64g1020:arm64g1030:arm64g1040:arm64g1100:arm64g1120:arm64g1130:arm64g1140:arm64g1210:arm64gtrunk:arm64g1220:arm64g1230:arm64g1310:arm64g1050:arm64g1320:arm64g1410:arm64g1330:arm64g1240:arm64g1420:arm64g1510:arm64g1430:arm64g1340:arm64g1250:arm64g1520 group.gcc64arm.isSemVer=true group.gcc64arm.objdumper=/opt/compiler-explorer/arm64/gcc-10.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/bin/objdump group.gcc64arm.instructionSet=aarch64 @@ -2949,6 +3035,11 @@ compiler.arm64g1510.exe=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown- compiler.arm64g1510.semver=15.1.0 compiler.arm64g1510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.arm64g1510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + +compiler.arm64g1520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-g++ +compiler.arm64g1520.semver=15.2.0 +compiler.arm64g1520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.arm64g1520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt compiler.arm64gtrunk.exe=/opt/compiler-explorer/arm64/gcc-trunk/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-g++ compiler.arm64gtrunk.semver=trunk compiler.arm64gtrunk.isNightly=true @@ -3159,7 +3250,7 @@ compiler.cl4302161.versionFlag=-version ################################ # GCC for AVR -group.avr.compilers=avrg454:avrg464:avrg540:avrg920:avrg930:avrg1030:avrg1100:avrg1210:avrg1220:avrg1230:avrg1240:avrg1250:avrg1310:avrg1320:avrg1330:avrg1340:avrg1410:avrg1420:avrg1430:avrg1510 +group.avr.compilers=avrg454:avrg464:avrg540:avrg920:avrg930:avrg1030:avrg1100:avrg1210:avrg1220:avrg1230:avrg1240:avrg1250:avrg1310:avrg1320:avrg1330:avrg1340:avrg1410:avrg1420:avrg1430:avrg1510:avrg1520 group.avr.groupName=AVR GCC group.avr.baseName=AVR gcc group.avr.isSemVer=true @@ -3257,6 +3348,11 @@ compiler.avrg1510.semver=15.1.0 compiler.avrg1510.objdumper=/opt/compiler-explorer/avr/gcc-15.1.0/avr/bin/avr-objdump compiler.avrg1510.demangler=/opt/compiler-explorer/avr/gcc-15.1.0/avr/bin/avr-c++filt +compiler.avrg1520.exe=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-g++ +compiler.avrg1520.semver=15.2.0 +compiler.avrg1520.objdumper=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-objdump +compiler.avrg1520.demangler=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-c++filt + ############################### # Cross compiler for MIPS group.mipss.compilers=&mips:&mipsel:&mips64:&mips64el:&mips-clang:&mipsel-clang:&mips64-clang:&mips64el-clang @@ -3415,7 +3511,7 @@ compiler.mips64el-clang1300.semver=13.0.0 ## MIPS group.mips.groupName=MIPS GCC -group.mips.compilers=mips5:mipsg494:mipsg550:mips930:mipsg950:mips1120:mipsg1210:mipsg1220:mipsg1230:mipsg1240:mipsg1250:mipsg1310:mipsg1320:mipsg1330:mipsg1340:mipsg1410:mipsg1420:mipsg1430:mipsg1510 +group.mips.compilers=mips5:mipsg494:mipsg550:mips930:mipsg950:mips1120:mipsg1210:mipsg1220:mipsg1230:mipsg1240:mipsg1250:mipsg1310:mipsg1320:mipsg1330:mipsg1340:mipsg1410:mipsg1420:mipsg1430:mipsg1510:mipsg1520 group.mips.baseName=mips gcc compiler.mipsg494.exe=/opt/compiler-explorer/mips/gcc-4.9.4/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++ @@ -3510,9 +3606,14 @@ compiler.mipsg1510.semver=15.1.0 compiler.mipsg1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.mipsg1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.mipsg1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++ +compiler.mipsg1520.semver=15.2.0 +compiler.mipsg1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.mipsg1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ## MIPS 64 group.mips64.groupName=MIPS64 GCC -group.mips64.compilers=mips64g494:mips64g550:mips64g950:mips64g1210:mips64g1220:mips64g1230:mips64g1310:mips64g1320:mips64g1410:mips64g1330:mips64g1240:mips64g1420:mips64g1510:mips64g1430:mips64g1340:mips64g1250:mips564:mips112064 +group.mips64.compilers=mips64g494:mips64g550:mips64g950:mips64g1210:mips64g1220:mips64g1230:mips64g1310:mips64g1320:mips64g1410:mips64g1330:mips64g1240:mips64g1420:mips64g1510:mips64g1430:mips64g1340:mips64g1250:mips64g1520:mips564:mips112064 group.mips64.baseName=mips64 gcc compiler.mips64g494.exe=/opt/compiler-explorer/mips64/gcc-4.9.4/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-g++ @@ -3602,9 +3703,14 @@ compiler.mips64g1510.semver=15.1.0 compiler.mips64g1510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.mips64g1510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.mips64g1520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-g++ +compiler.mips64g1520.semver=15.2.0 +compiler.mips64g1520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.mips64g1520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ## MIPS EL group.mipsel.groupName=MIPSEL GCC -group.mipsel.compilers=mips5el:mipselg494:mipselg550:mipselg950:mipselg1210:mipselg1220:mipselg1230:mipselg1240:mipselg1250:mipselg1310:mipselg1320:mipselg1330:mipselg1340:mipselg1410:mipselg1420:mipselg1430:mipselg1510 +group.mipsel.compilers=mips5el:mipselg494:mipselg550:mipselg950:mipselg1210:mipselg1220:mipselg1230:mipselg1240:mipselg1250:mipselg1310:mipselg1320:mipselg1330:mipselg1340:mipselg1410:mipselg1420:mipselg1430:mipselg1510:mipselg1520 group.mipsel.baseName=mipsel gcc compiler.mipselg494.exe=/opt/compiler-explorer/mipsel/gcc-4.9.4/mipsel-unknown-linux-gnu/bin/mipsel-unknown-linux-gnu-g++ @@ -3690,9 +3796,14 @@ compiler.mipselg1510.semver=15.1.0 compiler.mipselg1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.mipselg1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.mipselg1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-g++ +compiler.mipselg1520.semver=15.2.0 +compiler.mipselg1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.mipselg1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ## MIPS 64 EL group.mips64el.groupName=MIPS64EL GCC -group.mips64el.compilers=mips64elg494:mips64elg550:mips64elg950:mips64elg1210:mips64elg1220:mips64elg1230:mips64elg1310:mips64elg1320:mips64elg1410:mips64elg1330:mips64elg1240:mips64elg1420:mips64elg1510:mips64elg1430:mips64elg1340:mips64elg1250:mips564el +group.mips64el.compilers=mips64elg494:mips64elg550:mips64elg950:mips64elg1210:mips64elg1220:mips64elg1230:mips64elg1310:mips64elg1320:mips64elg1410:mips64elg1330:mips64elg1240:mips64elg1420:mips64elg1510:mips64elg1430:mips64elg1340:mips64elg1250:mips64elg1520:mips564el group.mips64el.baseName=mips64 (el) gcc group.mips64el.compilerCategories=gcc @@ -3779,6 +3890,11 @@ compiler.mips64elg1510.semver=15.1.0 compiler.mips64elg1510.objdumper=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump compiler.mips64elg1510.demangler=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt +compiler.mips64elg1520.exe=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-g++ +compiler.mips64elg1520.semver=15.2.0 +compiler.mips64elg1520.objdumper=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump +compiler.mips64elg1520.demangler=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt + ############################### # GCC for nanoMIPS group.nanomips.compilers=nanomips630 @@ -3813,7 +3929,7 @@ group.rvgcc.supportsBinary=true group.rvgcc.supportsBinaryObject=true ## GCC for RISC-V 32-bits -group.rv64gcc.compilers=rv64-gcctrunk:rv64-gcc1230:rv64-gcc1220:rv64-gcc1210:rv64-gcc1140:rv64-gcc1130:rv64-gcc1120:rv64-gcc1030:rv64-gcc1020:rv64-gcc940:rv64-gcc850:rv64-gcc820:rv64-gcc1310:rv64-gcc1320:rv64-gcc1410:rv64-gcc1330:rv64-gcc1240:rv64-gcc1420:rv64-gcc1510:rv64-gcc1430:rv64-gcc1340:rv64-gcc1250 +group.rv64gcc.compilers=rv64-gcctrunk:rv64-gcc1230:rv64-gcc1220:rv64-gcc1210:rv64-gcc1140:rv64-gcc1130:rv64-gcc1120:rv64-gcc1030:rv64-gcc1020:rv64-gcc940:rv64-gcc850:rv64-gcc820:rv64-gcc1310:rv64-gcc1320:rv64-gcc1410:rv64-gcc1330:rv64-gcc1240:rv64-gcc1420:rv64-gcc1510:rv64-gcc1430:rv64-gcc1340:rv64-gcc1250:rv64-gcc1520 group.rv64gcc.groupName=RISC-V (64-bits) gcc group.rv64gcc.baseName=RISC-V (64-bits) gcc @@ -3915,6 +4031,11 @@ compiler.rv64-gcc1510.semver=15.1.0 compiler.rv64-gcc1510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.rv64-gcc1510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.rv64-gcc1520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-g++ +compiler.rv64-gcc1520.semver=15.2.0 +compiler.rv64-gcc1520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.rv64-gcc1520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + compiler.rv64-gcctrunk.exe=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-g++ compiler.rv64-gcctrunk.semver=(trunk) compiler.rv64-gcctrunk.isNightly=true @@ -3922,7 +4043,7 @@ compiler.rv64-gcctrunk.objdumper=/opt/compiler-explorer/riscv64/gcc-trunk/riscv6 compiler.rv64-gcctrunk.demangler=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt ## GCC for RISC-V 32-bits -group.rv32gcc.compilers=rv32-gcctrunk:rv32-gcc1230:rv32-gcc1220:rv32-gcc1210:rv32-gcc1140:rv32-gcc1130:rv32-gcc1120:rv32-gcc1030:rv32-gcc1020:rv32-gcc940:rv32-gcc850:rv32-gcc820:rv32-gcc1310:rv32-gcc1320:rv32-gcc1410:rv32-gcc1330:rv32-gcc1240:rv32-gcc1420:rv32-gcc1510:rv32-gcc1430:rv32-gcc1340:rv32-gcc1250 +group.rv32gcc.compilers=rv32-gcctrunk:rv32-gcc1230:rv32-gcc1220:rv32-gcc1210:rv32-gcc1140:rv32-gcc1130:rv32-gcc1120:rv32-gcc1030:rv32-gcc1020:rv32-gcc940:rv32-gcc850:rv32-gcc820:rv32-gcc1310:rv32-gcc1320:rv32-gcc1410:rv32-gcc1330:rv32-gcc1240:rv32-gcc1420:rv32-gcc1510:rv32-gcc1430:rv32-gcc1340:rv32-gcc1250:rv32-gcc1520 group.rv32gcc.groupName=RISC-V (32-bits) gcc group.rv32gcc.baseName=RISC-V (32-bits) gcc @@ -4023,6 +4144,11 @@ compiler.rv32-gcc1510.semver=15.1.0 compiler.rv32-gcc1510.objdumper=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.rv32-gcc1510.demangler=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt +compiler.rv32-gcc1520.exe=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-g++ +compiler.rv32-gcc1520.semver=15.2.0 +compiler.rv32-gcc1520.objdumper=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump +compiler.rv32-gcc1520.demangler=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt + compiler.rv32-gcctrunk.exe=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-g++ compiler.rv32-gcctrunk.semver=(trunk) compiler.rv32-gcctrunk.isNightly=true @@ -4104,69 +4230,6 @@ compiler.esp32s3g20230208.name=Xtensa ESP32-S3 gcc 12.2.0 (20230208) compiler.esp32s3g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s3-elf-g++ compiler.esp32s3g20241119.name=Xtensa ESP32-S3 gcc 14.2.0 (20241119) -################################ -# Windows Compilers -group.cl.compilers=&cl19:&cl19_2015_u3:&cl_new -group.cl.compilerType=wine-vc -group.cl.includeFlag=/I -group.cl.versionFlag=/? -group.cl.versionRe=^Microsoft \(R\) C/C\+\+.*$ -group.cl.demangler=/opt/compiler-explorer/windows/19.10.25017/lib/native/bin/amd64/undname.exe -group.cl.demanglerType=win32 -group.cl.supportsBinary=false -group.cl.objdumper= -group.cl.isSemVer=true -group.cl.compilerCategories=msvc -group.cl.instructionSet=amd64 -group.cl19.groupName=WINE MSVC 2017 -group.cl19.compilers=cl19_64:cl19_32:cl19_arm -group.cl19.options=/I/opt/compiler-explorer/windows/10.0.10240.0/ucrt/ /I/opt/compiler-explorer/windows/19.10.25017/lib/native/include/ - -compiler.cl19_64.exe=/opt/compiler-explorer/windows/19.10.25017/lib/native/bin/amd64/cl.exe -compiler.cl19_64.name=x64 msvc v19.10 (WINE) -compiler.cl19_64.semver=19.10.25017 -compiler.cl19_32.exe=/opt/compiler-explorer/windows/19.10.25017/lib/native/bin/amd64_x86/cl.exe -compiler.cl19_32.name=x86 msvc v19.10 (WINE) -compiler.cl19_32.semver=19.10.25017 -compiler.cl19_arm.exe=/opt/compiler-explorer/windows/19.10.25017/lib/native/bin/amd64_arm/cl.exe -compiler.cl19_arm.name=ARM msvc v19.10 (WINE) -compiler.cl19_arm.semver=19.10.25017 -compiler.cl19_arm.instructionSet=arm32 - -group.cl19_2015_u3.groupName=WINE MSVC 2015 -group.cl19_2015_u3.compilers=cl19_2015_u3_64:cl19_2015_u3_32:cl19_2015_u3_arm -group.cl19_2015_u3.options=/I/opt/compiler-explorer/windows/10.0.10240.0/ucrt/ /I/opt/compiler-explorer/windows/19.00.24210/include/ - -compiler.cl19_2015_u3_64.exe=/opt/compiler-explorer/windows/19.00.24210/bin/amd64/cl.exe -compiler.cl19_2015_u3_64.name=x64 msvc v19.0 (WINE) -compiler.cl19_2015_u3_64.semver=19.00.24210 -compiler.cl19_2015_u3_32.exe=/opt/compiler-explorer/windows/19.00.24210/bin/amd64_x86/cl.exe -compiler.cl19_2015_u3_32.name=x86 msvc v19.0 (WINE) -compiler.cl19_2015_u3_32.semver=19.00.24210 -compiler.cl19_2015_u3_arm.exe=/opt/compiler-explorer/windows/19.00.24210/bin/amd64_arm/cl.exe -compiler.cl19_2015_u3_arm.name=ARM msvc v19.0 (WINE) -compiler.cl19_2015_u3_arm.semver=19.00.24210 -compiler.cl19_2015_u3_arm.instructionSet=arm32 - -group.cl_new.groupName=WINE MSVC 2017 -group.cl_new.compilers=cl_new_64:cl_new_32:cl_new_arm32:cl_new_arm64 -group.cl_new.options=/I/opt/compiler-explorer/windows/10.0.10240.0/ucrt/ /I/opt/compiler-explorer/windows/19.14.26423/include/ - -compiler.cl_new_64.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/x64/cl.exe -compiler.cl_new_64.name=x64 msvc v19.14 (WINE) -compiler.cl_new_64.semver=19.14.26423 -compiler.cl_new_32.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/x86/cl.exe -compiler.cl_new_32.name=x86 msvc v19.14 (WINE) -compiler.cl_new_32.semver=19.14.26423 -compiler.cl_new_arm32.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/arm/cl.exe -compiler.cl_new_arm32.name=ARM msvc v19.14 (WINE) -compiler.cl_new_arm32.semver=19.14.26423 -compiler.cl_new_arm32.instructionSet=arm32 -compiler.cl_new_arm64.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/arm64/cl.exe -compiler.cl_new_arm64.name=ARM64 msvc v19.14 (WINE) -compiler.cl_new_arm64.semver=19.14.26423 -compiler.cl_new_arm64.instructionSet=aarch64 - ################################# # ELLCC group.ellcc.compilers=ellcc0133:ellcc0134:ellcc170716 @@ -4612,7 +4675,7 @@ compiler.z180-clang-1507.options=-target z180 -g0 -nostdinc -fno-threadsafe-stat ################################# ################################# # Installed libs -libs=abseil:array:async_simple:belleviews:beman_any_view:beman_exemplar:beman_execution:beman_iterator_interface:beman_inplace_vector:beman_net:beman_optional:beman_scope:beman_task:benchmark:benri:blaze:boost:bmpi3:bmulti:brigand:bronto:catch2:cccl:cctz:cereal:cmcstl2:cnl:cppcoro:cppitertools:cpptrace:crosscables:ctbignum:cthash:ctre:date:dataframe:dawjson:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:flux:fmt:gcem:gemmlowp:glaze:glm:gnufs:gnulibbacktrace:gnuexp:googletest:gsl:hdf5:hedley:hfsm:highfive:highway:hotels-template-library:hpx:immer:jsoncons:jsoncpp:kiwaku:kokkos:kumi:kvasir:kyosu:lager:lagom:lexy:libassert:libbpf:libguarded:libsimdpp:libuv:llvm:llvmfs:lua:magic_enum:mfem:mimicpp:mlir:mp-coro:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:ppdt:proxy:pugixml:pybind11:python:rangesv3:raberu:rapidjson:reactive_plus_plus:scnlib:seastar:seqan3:simde:simdjson:sol2:spdlog:spy:stdexec:strong_type:taojson:taskflow:tbb:thinkcell:tlexpected:toml11:tomlplusplus:trompeloeil:tts:type_safe:unifex:ureact:vcl:xercesc:xsimd:xtensor:xtl:yomm2:zug:cli11:avr-libstdcpp:curl:copperspice:sqlite:ztdcuneicode:ztdencodingtables:ztdidk:ztdstaticcontainers:ztdtext:ztdplatform:qt:quill:pcre2:widberg-defs:jwt-cpp:xieite:option:mdspan:graaf +libs=abseil:array:async_simple:belleviews:beman_any_view:beman_exemplar:beman_execution:beman_iterator_interface:beman_inplace_vector:beman_net:beman_optional:beman_scope:beman_task:benchmark:benri:blaze:boost:bmpi3:bmulti:brigand:bronto:catch2:cccl:cctz:cereal:cmcstl2:cnl:cppcoro:cppitertools:cpptrace:crosscables:ctbignum:cthash:ctre:date:dataframe:dawjson:dlib:doctest:eastl:eigen:enoki:entt:etl:eve:expected_lite:fastor:flux:fmt:gcem:gemmlowp:glaze:glm:gnufs:gnulibbacktrace:gnuexp:googletest:gsl:hdf5:hedley:hfsm:highfive:highway:hotels-template-library:hpx:immer:jsoncons:jsoncpp:kiwaku:kokkos:kumi:kvasir:kyosu:lager:lagom:lexy:libassert:libbpf:libguarded:libsimdpp:libuv:llvm:llvmfs:lua:magic_enum:mfem:mimicpp:mlir:mp-coro:mp-units:namedtype:nanorange:nlohmann_json:nsimd:ofw:openssl:outcome:pegtl:pipes:ppdt:proxy:pugixml:pybind11:python:rangesv3:raberu:rapidjson:re2:reactive_plus_plus:scnlib:seastar:seqan3:simde:simdjson:sol2:spdlog:spy:stdexec:strong_type:taojson:taskflow:tbb:thinkcell:tlexpected:toml11:tomlplusplus:trompeloeil:tts:type_safe:unifex:ureact:vcl:xercesc:xsimd:xtensor:xtl:yomm2:zug:cli11:avr-libstdcpp:curl:copperspice:sqlite:ztdcuneicode:ztdencodingtables:ztdidk:ztdstaticcontainers:ztdtext:ztdplatform:qt:quill:pcre2:widberg-defs:jwt-cpp:xieite:option:mdspan:graaf libs.abseil.name=Abseil libs.abseil.versions=202501270 @@ -6123,6 +6186,13 @@ libs.rapidjson.versions.101.path=/opt/compiler-explorer/libs/rapidjson/v1.0.1/in libs.rapidjson.versions.100.version=v1.0.0 libs.rapidjson.versions.100.path=/opt/compiler-explorer/libs/rapidjson/v1.0.0/include +libs.re2.name=RE2 +libs.re2.url=https://github.com/google/re2/ +libs.re2.packagedheaders=true +libs.re2.staticliblink=re2 +libs.re2.versions=20240702 +libs.re2.versions.20240702.version=2024-07-02 + libs.reactive_plus_plus.name=ReactivePlusPlus libs.reactive_plus_plus.url=https://github.com/victimsnino/ReactivePlusPlus libs.reactive_plus_plus.description=Functional reactive programming library for c++20 inspired by ReactiveX diff --git a/etc/config/c++.amazonwin.properties b/etc/config/c++.amazonwin.properties index f26416f7a..4e5bfe74c 100644 --- a/etc/config/c++.amazonwin.properties +++ b/etc/config/c++.amazonwin.properties @@ -71,7 +71,7 @@ compiler.mingw64_ucrt_clang_1406.semver=14.0.6 compiler.mingw64_ucrt_clang_1403.exe=Z:/compilers/mingw-w64-11.3.0-14.0.3-10.0.0-ucrt-r3/bin/clang++.exe compiler.mingw64_ucrt_clang_1403.semver=14.0.3 -group.vcpp.compilers=&vcpp_x86:&vcpp_x64:&vcpp_arm64 +group.vcpp.compilers=&vcpp_x86:&vcpp_x64:&vcpp_arm64:&vcpp_arm32 group.vcpp.options=/EHsc /utf-8 /MD group.vcpp.compilerType=win32-vc group.vcpp.needsMulti=false @@ -88,7 +88,7 @@ group.vcpp.licenseLink=https://visualstudio.microsoft.com/license-terms/vs2022-g group.vcpp.licensePreamble=The use of this compiler is only permitted for internal evaluation purposes and is otherwise governed by the MSVC License Agreement. group.vcpp.licenseInvasive=true -group.vcpp_x86.compilers=vcpp_v19_latest_x86:vcpp_v19_24_VS16_4_x86:vcpp_v19_25_VS16_5_x86:vcpp_v19_27_VS16_7_x86:vcpp_v19_28_VS16_8_x86:vcpp_v19_28_VS16_9_x86:vcpp_v19_29_VS16_10_x86:vcpp_v19_29_VS16_11_x86:vcpp_v19_20_VS16_0_x86:vcpp_v19_21_VS16_1_x86:vcpp_v19_22_VS16_2_x86:vcpp_v19_23_VS16_3_x86:vcpp_v19_30_VS17_0_x86:vcpp_v19_31_VS17_1_x86:vcpp_v19_33_VS17_3_x86:vcpp_v19_35_VS17_5_x86:vcpp_v19_37_VS17_7_x86:vcpp_v19_32_VS17_2_x86:vcpp_v19_34_VS17_4_x86:vcpp_v19_36_VS17_6_x86:vcpp_v19_38_VS17_8_x86:vcpp_v19_39_VS17_9_x86:vcpp_v19_40_VS17_10_x86:vcpp_v19_41_VS17_11_x86:vcpp_v19_42_VS17_12_x86:vcpp_v19_43_VS17_13_x86 +group.vcpp_x86.compilers=vcpp_v19_latest_x86:cl19_2015_u3_32_exwine:cl19_32_exwine:cl_new_32_exwine:vcpp_v19_24_VS16_4_x86:vcpp_v19_25_VS16_5_x86:vcpp_v19_27_VS16_7_x86:vcpp_v19_28_VS16_8_x86:vcpp_v19_28_VS16_9_x86:vcpp_v19_29_VS16_10_x86:vcpp_v19_29_VS16_11_x86:vcpp_v19_20_VS16_0_x86:vcpp_v19_21_VS16_1_x86:vcpp_v19_22_VS16_2_x86:vcpp_v19_23_VS16_3_x86:vcpp_v19_30_VS17_0_x86:vcpp_v19_31_VS17_1_x86:vcpp_v19_33_VS17_3_x86:vcpp_v19_35_VS17_5_x86:vcpp_v19_37_VS17_7_x86:vcpp_v19_32_VS17_2_x86:vcpp_v19_34_VS17_4_x86:vcpp_v19_36_VS17_6_x86:vcpp_v19_38_VS17_8_x86:vcpp_v19_39_VS17_9_x86:vcpp_v19_40_VS17_10_x86:vcpp_v19_41_VS17_11_x86:vcpp_v19_42_VS17_12_x86:vcpp_v19_43_VS17_13_x86 group.vcpp_x86.groupName=MSVC x86 group.vcpp_x86.isSemVer=true group.vcpp_x86.supportsBinary=true @@ -96,20 +96,123 @@ group.vcpp_x86.supportsExecute=true group.vcpp_x86.instructionSet=amd64 group.vcpp_x86.extraPath=Z:/compilers/debug_nonredist/x86/Microsoft.VC142.DebugCRT -group.vcpp_x64.compilers=vcpp_v19_latest_x64:vcpp_v19_24_VS16_4_x64:vcpp_v19_25_VS16_5_x64:vcpp_v19_27_VS16_7_x64:vcpp_v19_28_VS16_8_x64:vcpp_v19_28_VS16_9_x64:vcpp_v19_29_VS16_10_x64:vcpp_v19_29_VS16_11_x64:vcpp_v19_20_VS16_0_x64:vcpp_v19_21_VS16_1_x64:vcpp_v19_22_VS16_2_x64:vcpp_v19_23_VS16_3_x64:vcpp_v19_30_VS17_0_x64:vcpp_v19_31_VS17_1_x64:vcpp_v19_33_VS17_3_x64:vcpp_v19_35_VS17_5_x64:vcpp_v19_37_VS17_7_x64:vcpp_v19_32_VS17_2_x64:vcpp_v19_34_VS17_4_x64:vcpp_v19_36_VS17_6_x64:vcpp_v19_38_VS17_8_x64:vcpp_v19_39_VS17_9_x64:vcpp_v19_40_VS17_10_x64:vcpp_v19_41_VS17_11_x64:vcpp_v19_42_VS17_12_x64:vcpp_v19_43_VS17_13_x64 +group.vcpp_x64.compilers=vcpp_v19_latest_x64:cl19_2015_u3_64_exwine:cl19_64_exwine:cl_new_64_exwine:vcpp_v19_24_VS16_4_x64:vcpp_v19_25_VS16_5_x64:vcpp_v19_27_VS16_7_x64:vcpp_v19_28_VS16_8_x64:vcpp_v19_28_VS16_9_x64:vcpp_v19_29_VS16_10_x64:vcpp_v19_29_VS16_11_x64:vcpp_v19_20_VS16_0_x64:vcpp_v19_21_VS16_1_x64:vcpp_v19_22_VS16_2_x64:vcpp_v19_23_VS16_3_x64:vcpp_v19_30_VS17_0_x64:vcpp_v19_31_VS17_1_x64:vcpp_v19_33_VS17_3_x64:vcpp_v19_35_VS17_5_x64:vcpp_v19_37_VS17_7_x64:vcpp_v19_32_VS17_2_x64:vcpp_v19_34_VS17_4_x64:vcpp_v19_36_VS17_6_x64:vcpp_v19_38_VS17_8_x64:vcpp_v19_39_VS17_9_x64:vcpp_v19_40_VS17_10_x64:vcpp_v19_41_VS17_11_x64:vcpp_v19_42_VS17_12_x64:vcpp_v19_43_VS17_13_x64 group.vcpp_x64.groupName=MSVC x64 group.vcpp_x64.supportsBinary=true group.vcpp_x64.supportsExecute=true group.vcpp_x64.instructionSet=amd64 group.vcpp_x64.extraPath=Z:/compilers/debug_nonredist/x64/Microsoft.VC142.DebugCRT -group.vcpp_arm64.compilers=vcpp_v19_latest_arm64:vcpp_v19_28_VS16_9_arm64:vcpp_v19_29_VS16_10_arm64:vcpp_v19_29_VS16_11_arm64:vcpp_v19_25_VS16_5_arm64:vcpp_v19_27_VS16_7_arm64:vcpp_v19_24_VS16_4_arm64:vcpp_v19_28_VS16_8_arm64:vcpp_v19_20_VS16_0_arm64:vcpp_v19_21_VS16_1_arm64:vcpp_v19_22_VS16_2_arm64:vcpp_v19_23_VS16_3_arm64:vcpp_v19_30_VS17_0_arm64:vcpp_v19_31_VS17_1_arm64:vcpp_v19_33_VS17_3_arm64:vcpp_v19_35_VS17_5_arm64:vcpp_v19_37_VS17_7_arm64:vcpp_v19_32_VS17_2_arm64:vcpp_v19_34_VS17_4_arm64:vcpp_v19_36_VS17_6_arm64:vcpp_v19_38_VS17_8_arm64:vcpp_v19_39_VS17_9_arm64:vcpp_v19_40_VS17_10_arm64:vcpp_v19_41_VS17_11_arm64:vcpp_v19_42_VS17_12_arm64:vcpp_v19_43_VS17_13_arm64 +group.vcpp_arm64.compilers=vcpp_v19_latest_arm64:cl_new_arm64_exwine:vcpp_v19_28_VS16_9_arm64:vcpp_v19_29_VS16_10_arm64:vcpp_v19_29_VS16_11_arm64:vcpp_v19_25_VS16_5_arm64:vcpp_v19_27_VS16_7_arm64:vcpp_v19_24_VS16_4_arm64:vcpp_v19_28_VS16_8_arm64:vcpp_v19_20_VS16_0_arm64:vcpp_v19_21_VS16_1_arm64:vcpp_v19_22_VS16_2_arm64:vcpp_v19_23_VS16_3_arm64:vcpp_v19_30_VS17_0_arm64:vcpp_v19_31_VS17_1_arm64:vcpp_v19_33_VS17_3_arm64:vcpp_v19_35_VS17_5_arm64:vcpp_v19_37_VS17_7_arm64:vcpp_v19_32_VS17_2_arm64:vcpp_v19_34_VS17_4_arm64:vcpp_v19_36_VS17_6_arm64:vcpp_v19_38_VS17_8_arm64:vcpp_v19_39_VS17_9_arm64:vcpp_v19_40_VS17_10_arm64:vcpp_v19_41_VS17_11_arm64:vcpp_v19_42_VS17_12_arm64:vcpp_v19_43_VS17_13_arm64 group.vcpp_arm64.groupName=MSVC arm64 group.vcpp_arm64.supportsBinary=false group.vcpp_arm64.supportsBinaryObject=false group.vcpp_arm64.supportsExecute=false group.vcpp_arm64.instructionSet=aarch64 +################ +# Converted from WINE +group.vcpp_arm32.compilers=cl19_arm_exwine:cl19_2015_u3_arm_exwine:cl_new_arm32_exwine +group.vcpp_arm32.groupName=MSVC arm32 +group.vcpp_arm32.supportsBinary=false +group.vcpp_arm32.supportsBinaryObject=false +group.vcpp_arm32.supportsExecute=false +group.vcpp_arm32.instructionSet=arm32 + +compiler.cl19_2015_u3_32_exwine.supportsBinary=false +compiler.cl19_2015_u3_32_exwine.supportsBinaryObject=false +compiler.cl19_2015_u3_32_exwine.supportsExecute=false +compiler.cl19_2015_u3_32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.00.24210/bin/amd64_x86/cl.exe +compiler.cl19_2015_u3_32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/lib +compiler.cl19_2015_u3_32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl19_2015_u3_32_exwine.name=x86 msvc v19.0 (ex-WINE) +compiler.cl19_2015_u3_32_exwine.semver=19.00.24210 +compiler.cl19_2015_u3_32_exwine.alias=cl19_2015_u3_32 + +compiler.cl19_2015_u3_64_exwine.supportsBinary=false +compiler.cl19_2015_u3_64_exwine.supportsBinaryObject=false +compiler.cl19_2015_u3_64_exwine.supportsExecute=false +compiler.cl19_2015_u3_64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.00.24210/bin/amd64/cl.exe +compiler.cl19_2015_u3_64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/lib +compiler.cl19_2015_u3_64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl19_2015_u3_64_exwine.name=x64 msvc v19.0 (ex-WINE) +compiler.cl19_2015_u3_64_exwine.semver=19.00.24210 +compiler.cl19_2015_u3_64_exwine.alias=cl19_2015_u3_64 + +compiler.cl19_2015_u3_arm_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.00.24210/bin/amd64_arm/cl.exe +compiler.cl19_2015_u3_arm_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/lib +compiler.cl19_2015_u3_arm_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl19_2015_u3_arm_exwine.name=ARM msvc v19.0 (ex-WINE) +compiler.cl19_2015_u3_arm_exwine.semver=19.00.24210 +compiler.cl19_2015_u3_arm_exwine.alias=cl19_2015_u3_arm + +compiler.cl19_32_exwine.supportsBinary=false +compiler.cl19_32_exwine.supportsBinaryObject=false +compiler.cl19_32_exwine.supportsExecute=false +compiler.cl19_32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/bin/amd64_x86/cl.exe +compiler.cl19_32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/lib +compiler.cl19_32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl19_32_exwine.name=x86 msvc v19.10 (ex-WINE) +compiler.cl19_32_exwine.semver=19.10.25017 +compiler.cl19_32_exwine.alias=cl19_32 + +compiler.cl19_64_exwine.supportsBinary=false +compiler.cl19_64_exwine.supportsBinaryObject=false +compiler.cl19_64_exwine.supportsExecute=false +compiler.cl19_64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/bin/amd64/cl.exe +compiler.cl19_64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/lib +compiler.cl19_64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl19_64_exwine.name=x64 msvc v19.10 (ex-WINE) +compiler.cl19_64_exwine.semver=19.10.25017 +compiler.cl19_64_exwine.alias=cl19_64 + +compiler.cl19_arm_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/bin/amd64_arm/cl.exe +compiler.cl19_arm_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/lib +compiler.cl19_arm_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl19_arm_exwine.name=ARM msvc v19.10 (ex-WINE) +compiler.cl19_arm_exwine.semver=19.10.25017 +compiler.cl19_arm_exwine.alias=cl19_arm + +compiler.cl_new_32_exwine.supportsBinary=false +compiler.cl_new_32_exwine.supportsBinaryObject=false +compiler.cl_new_32_exwine.supportsExecute=false +compiler.cl_new_32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/x86/cl.exe +compiler.cl_new_32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.cl_new_32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl_new_32_exwine.name=x86 msvc v19.14 (ex-WINE) +compiler.cl_new_32_exwine.semver=19.14.26423 +compiler.cl_new_32_exwine.alias=cl_new_32 + +compiler.cl_new_64_exwine.supportsBinary=false +compiler.cl_new_64_exwine.supportsBinaryObject=false +compiler.cl_new_64_exwine.supportsExecute=false +compiler.cl_new_64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/x64/cl.exe +compiler.cl_new_64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.cl_new_64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl_new_64_exwine.name=x64 msvc v19.14 (ex-WINE) +compiler.cl_new_64_exwine.semver=19.14.26423 +compiler.cl_new_64_exwine.alias=cl_new_64 + +compiler.cl_new_arm32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/arm/cl.exe +compiler.cl_new_arm32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.cl_new_arm32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl_new_arm32_exwine.name=ARM msvc v19.14 (ex-WINE) +compiler.cl_new_arm32_exwine.semver=19.14.26423 +compiler.cl_new_arm32_exwine.alias=cl_new_arm32 + +compiler.cl_new_arm64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/arm64/cl.exe +compiler.cl_new_arm64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.cl_new_arm64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.cl_new_arm64_exwine.name=ARM64 msvc v19.14 (ex-WINE) +compiler.cl_new_arm64_exwine.semver=19.14.26423 +compiler.cl_new_arm64_exwine.alias=cl_new_arm64 + +# end of WINE conversion +################ + +################ +# Normal installations + compiler.vcpp_v19_20_VS16_0_x86.exe=Z:/compilers/msvc/14.20.27508-14.20.27525.0/bin/Hostx64/x86/cl.exe compiler.vcpp_v19_20_VS16_0_x86.libPath=Z:/compilers/msvc/14.20.27508-14.20.27525.0/lib;Z:/compilers/msvc/14.20.27508-14.20.27525.0/lib/x86;Z:/compilers/msvc/14.20.27508-14.20.27525.0/atlmfc/lib/x86;Z:/compilers/msvc/14.20.27508-14.20.27525.0/ifc/x86;Z:/compilers/windows-kits-10/lib/10.0.22621.0/ucrt/x86;Z:/compilers/windows-kits-10/lib/10.0.22621.0/um/x86; compiler.vcpp_v19_20_VS16_0_x86.includePath=Z:/compilers/msvc/14.20.27508-14.20.27525.0/include;Z:/compilers/windows-kits-10/include/10.0.22621.0/cppwinrt;Z:/compilers/windows-kits-10/include/10.0.22621.0/shared;Z:/compilers/windows-kits-10/include/10.0.22621.0/ucrt;Z:/compilers/windows-kits-10/include/10.0.22621.0/um;Z:/compilers/windows-kits-10/include/10.0.22621.0/winrt; diff --git a/etc/config/c.amazon.properties b/etc/config/c.amazon.properties index 023bb2176..5e31ca633 100644 --- a/etc/config/c.amazon.properties +++ b/etc/config/c.amazon.properties @@ -1,5 +1,5 @@ -compilers=&cgcc86:&cclang:&nvc_x86:&armcclang32:&armcclang64:&cmosclang-trunk:&rvcclang:&wasmcclang:&ppci:&cicc:&cicx:&ccl:&ccross:&cgcc-classic:&cc65:&sdcc:&ctendra:&tinycc:&zigcc:&cproc86:&chibicc:&z80-cclang:&z88dk:&compcert:godbolt.org@443/winprod:&movfuscator:&lc3:&upmem-clang:&cvast:&orcac:&c2rust -defaultCompiler=cg151 +compilers=&cgcc86:&cclang:&nvc_x86:&armcclang32:&armcclang64:&cmosclang-trunk:&rvcclang:&wasmcclang:&ppci:&cicc:&cicx:&ccross:&cgcc-classic:&cc65:&sdcc:&ctendra:&tinycc:&zigcc:&cproc86:&chibicc:&z80-cclang:&z88dk:&compcert:godbolt.org@443/winprod:&movfuscator:&lc3:&upmem-clang:&cvast:&orcac:&c2rust +defaultCompiler=cg152 # We use the llvm-trunk demangler for all c/c++ compilers, as c++filt tends to lag behind demangler=/opt/compiler-explorer/clang-trunk/bin/llvm-cxxfilt objdumper=/opt/compiler-explorer/gcc-15.1.0/bin/objdump @@ -15,7 +15,7 @@ llvmDisassembler=/opt/compiler-explorer/clang-18.1.0/bin/llvm-dis ############################### # GCC for x86 -group.cgcc86.compilers=&cgcc86assert:cg346:cg404:cg412:cg447:cg453:cg464:cg471:cg472:cg473:cg474:cg481:cg482:cg483:cg484:cg485:cg490:cg491:cg492:cg493:cg494:cg510:cg520:cg530:cg540:cg6:cg62:cg63:cg65:cg71:cg72:cg73:cg74:cg75:cg81:cg82:cg83:cg84:cg85:cg91:cg92:cg93:cg94:cg95:cg101:cg102:cg103:cg104:cg105:cg111:cg112:cg113:cg114:cg121:cg122:cg123:cg124:cg125:cg131:cg132:cg133:cg134:cg141:cg142:cg143:cg151:cgsnapshot:cgstatic-analysis +group.cgcc86.compilers=&cgcc86assert:cg346:cg404:cg412:cg447:cg453:cg464:cg471:cg472:cg473:cg474:cg481:cg482:cg483:cg484:cg485:cg490:cg491:cg492:cg493:cg494:cg510:cg520:cg530:cg540:cg6:cg62:cg63:cg65:cg71:cg72:cg73:cg74:cg75:cg81:cg82:cg83:cg84:cg85:cg91:cg92:cg93:cg94:cg95:cg101:cg102:cg103:cg104:cg105:cg111:cg112:cg113:cg114:cg121:cg122:cg123:cg124:cg125:cg131:cg132:cg133:cg134:cg141:cg142:cg143:cg151:cg152:cgsnapshot:cgstatic-analysis group.cgcc86.groupName=GCC x86-64 group.cgcc86.instructionSet=amd64 group.cgcc86.isSemVer=true @@ -175,6 +175,8 @@ compiler.cg143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/gcc compiler.cg143.semver=14.3 compiler.cg151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gcc compiler.cg151.semver=15.1 +compiler.cg152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gcc +compiler.cg152.semver=15.2 compiler.cgsnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/gcc compiler.cgsnapshot.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt @@ -196,7 +198,7 @@ compiler.cg71.needsMulti=true compiler.cg72.needsMulti=true ## GCC x86 build with "assertions" (--enable-checking=XXX) -group.cgcc86assert.compilers=cg103assert:cg104assert:cg105assert:cg111assert:cg112assert:cg113assert:cg114assert:cg121assert:cg122assert:cg123assert:cg124assert:cg125assert:cg131assert:cg132assert:cg133assert:cg134assert:cg141assert:cg142assert:cg143assert:cg151assert +group.cgcc86assert.compilers=cg103assert:cg104assert:cg105assert:cg111assert:cg112assert:cg113assert:cg114assert:cg121assert:cg122assert:cg123assert:cg124assert:cg125assert:cg131assert:cg132assert:cg133assert:cg134assert:cg141assert:cg142assert:cg143assert:cg151assert:cg152assert group.cgcc86assert.groupName=GCC x86-64 (assertions) compiler.cg103assert.exe=/opt/compiler-explorer/gcc-assertions-10.3.0/bin/gcc @@ -239,6 +241,8 @@ compiler.cg143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/gcc compiler.cg143assert.semver=14.3 (assertions) compiler.cg151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gcc compiler.cg151assert.semver=15.1 (assertions) +compiler.cg152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gcc +compiler.cg152assert.semver=15.2 (assertions) # Classic x86 compilers (32-bit only) @@ -1189,7 +1193,7 @@ compiler.cbpfclang1300.exe=/opt/compiler-explorer/clang-13.0.0/bin/clang compiler.cbpfclang1300.semver=13.0.0 # GCC for BPF -group.cgccbpf.compilers=cbpfg1310:cbpfg1320:cbpfg1330:cbpfg1340:cbpfg1410:cbpfg1420:cbpfg1430:cbpfg1510:cbpfgtrunk +group.cgccbpf.compilers=cbpfg1310:cbpfg1320:cbpfg1330:cbpfg1340:cbpfg1410:cbpfg1420:cbpfg1430:cbpfg1510:cbpfg1520:cbpfgtrunk group.cgccbpf.supportsBinary=true group.cgccbpf.supportsExecute=false group.cgccbpf.baseName=BPF gcc @@ -1237,6 +1241,11 @@ compiler.cbpfg1510.semver=15.1.0 compiler.cbpfg1510.objdumper=/opt/compiler-explorer/bpf/gcc-15.1.0/bpf-unknown-none/bin/bpf-unknown-objdump compiler.cbpfg1510.demangler=/opt/compiler-explorer/bpf/gcc-15.1.0/bpf-unknown-none/bin/bpf-unknown-none-c++filt +compiler.cbpfg1520.exe=/opt/compiler-explorer/bpf/gcc-15.2.0/bpf-unknown-none/bin/bpf-unknown-gcc +compiler.cbpfg1520.semver=15.2.0 +compiler.cbpfg1520.objdumper=/opt/compiler-explorer/bpf/gcc-15.2.0/bpf-unknown-none/bin/bpf-unknown-objdump +compiler.cbpfg1520.demangler=/opt/compiler-explorer/bpf/gcc-15.2.0/bpf-unknown-none/bin/bpf-unknown-none-c++filt + compiler.cbpfgtrunk.exe=/opt/compiler-explorer/bpf/gcc-trunk/bpf-unknown-none/bin/bpf-unknown-gcc compiler.cbpfgtrunk.semver=trunk compiler.cbpfgtrunk.isNightly=true @@ -1265,7 +1274,7 @@ compiler.ctricoreg1130.demangler=/opt/compiler-explorer/tricore/gcc-11.3.0/trico group.chppa.compilers=&cgcchppa # GCC for HPPA -group.cgcchppa.compilers=chppag1420:chppag1430:chppag1510 +group.cgcchppa.compilers=chppag1420:chppag1430:chppag1510:chppag1520 group.cgcchppa.baseName=HPPA gcc group.cgcchppa.groupName=HPPA GCC group.cgcchppa.isSemVer=true @@ -1287,6 +1296,11 @@ compiler.chppag1510.semver=15.1.0 compiler.chppag1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.chppag1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.chppag1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-gcc +compiler.chppag1520.semver=15.2.0 +compiler.chppag1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.chppag1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + ############################### # Cross for m68k group.cm68k.compilers=&cgccm68k:&cclangm68k @@ -1309,7 +1323,7 @@ compiler.cm68kclangtrunk.semver=(trunk) compiler.cm68kclangtrunk.isNightly=true # GCC for m68k -group.cgccm68k.compilers=cm68kg1310:cm68kg1320:cm68kg1410:cm68kg1330:cm68kg1420:cm68kg1510:cm68kg1430:cm68kg1340 +group.cgccm68k.compilers=cm68kg1310:cm68kg1320:cm68kg1410:cm68kg1330:cm68kg1420:cm68kg1510:cm68kg1430:cm68kg1340:cm68kg1520 group.cgccm68k.supportsBinary=true group.cgccm68k.supportsExecute=false group.cgccm68k.baseName=M68K gcc @@ -1357,12 +1371,17 @@ compiler.cm68kg1510.semver=15.1.0 compiler.cm68kg1510.objdumper=/opt/compiler-explorer/m68k/gcc-15.1.0/m68k-unknown-elf/bin/m68k-unknown-elf-objdump compiler.cm68kg1510.demangler=/opt/compiler-explorer/m68k/gcc-15.1.0/m68k-unknown-elf/bin/m68k-unknown-elf-c++filt +compiler.cm68kg1520.exe=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-gcc +compiler.cm68kg1520.semver=15.2.0 +compiler.cm68kg1520.objdumper=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-objdump +compiler.cm68kg1520.demangler=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-c++filt + ############################### # Cross for SPARC group.csparc.compilers=&cgccsparc # GCC for SPARC -group.cgccsparc.compilers=csparcg1220:csparcg1230:csparcg1240:csparcg1250:csparcg1310:csparcg1320:csparcg1330:csparcg1340:csparcg1410:csparcg1420:csparcg1430:csparcg1510 +group.cgccsparc.compilers=csparcg1220:csparcg1230:csparcg1240:csparcg1250:csparcg1310:csparcg1320:csparcg1330:csparcg1340:csparcg1410:csparcg1420:csparcg1430:csparcg1510:csparcg1520 group.cgccsparc.baseName=SPARC gcc group.cgccsparc.groupName=SPARC GCC group.cgccsparc.isSemVer=true @@ -1427,12 +1446,17 @@ compiler.csparcg1510.semver=15.1.0 compiler.csparcg1510.objdumper=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump compiler.csparcg1510.demangler=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt +compiler.csparcg1520.exe=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-gcc +compiler.csparcg1520.semver=15.2.0 +compiler.csparcg1520.objdumper=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump +compiler.csparcg1520.demangler=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt + ############################### # Cross for SPARC64 group.csparc64.compilers=&cgccsparc64 # GCC for SPARC64 -group.cgccsparc64.compilers=csparc64g1220:csparc64g1230:csparc64g1310:csparc64g1320:csparc64g1410:csparc64g1330:csparc64g1240:csparc64g1420:csparc64g1510:csparc64g1430:csparc64g1340:csparc64g1250 +group.cgccsparc64.compilers=csparc64g1220:csparc64g1230:csparc64g1310:csparc64g1320:csparc64g1410:csparc64g1330:csparc64g1240:csparc64g1420:csparc64g1510:csparc64g1430:csparc64g1340:csparc64g1250:csparc64g1520 group.cgccsparc64.baseName=SPARC64 gcc group.cgccsparc64.groupName=SPARC64 GCC group.cgccsparc64.isSemVer=true @@ -1497,12 +1521,17 @@ compiler.csparc64g1510.semver=15.1.0 compiler.csparc64g1510.objdumper=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump compiler.csparc64g1510.demangler=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt +compiler.csparc64g1520.exe=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-gcc +compiler.csparc64g1520.semver=15.2.0 +compiler.csparc64g1520.objdumper=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump +compiler.csparc64g1520.demangler=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt + ############################### # Cross for SPARC-LEON group.csparcleon.compilers=&cgccsparcleon # GCC for SPARC-LEON -group.cgccsparcleon.compilers=csparcleong1220:csparcleong1220-1:csparcleong1230:csparcleong1240:csparcleong1250:csparcleong1310:csparcleong1320:csparcleong1330:csparcleong1340:csparcleong1410:csparcleong1420:csparcleong1430:csparcleong1510 +group.cgccsparcleon.compilers=csparcleong1220:csparcleong1220-1:csparcleong1230:csparcleong1240:csparcleong1250:csparcleong1310:csparcleong1320:csparcleong1330:csparcleong1340:csparcleong1410:csparcleong1420:csparcleong1430:csparcleong1510:csparcleong1520 group.cgccsparcleon.baseName=SPARC LEON gcc group.cgccsparcleon.groupName=SPARC LEON GCC group.cgccsparcleon.isSemVer=true @@ -1569,6 +1598,11 @@ compiler.csparcleong1510.semver=15.1.0 compiler.csparcleong1510.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump compiler.csparcleong1510.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt +compiler.csparcleong1520.exe=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-gcc +compiler.csparcleong1520.semver=15.2.0 +compiler.csparcleong1520.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump +compiler.csparcleong1520.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt + compiler.csparcleong1220-1.exe=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-gcc compiler.csparcleong1220-1.semver=12.2.0 compiler.csparcleong1220-1.objdumper=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump @@ -1579,7 +1613,7 @@ compiler.csparcleong1220-1.demangler=/opt/compiler-explorer/sparc-leon/gcc-12.2. group.cc6x.compilers=&cgccc6x # GCC for TI C6x -group.cgccc6x.compilers=cc6xg1220:cc6xg1230:cc6xg1310:cc6xg1320:cc6xg1410:cc6xg1330:cc6xg1240:cc6xg1420:cc6xg1510:cc6xg1430:cc6xg1340:cc6xg1250 +group.cgccc6x.compilers=cc6xg1220:cc6xg1230:cc6xg1310:cc6xg1320:cc6xg1410:cc6xg1330:cc6xg1240:cc6xg1420:cc6xg1510:cc6xg1430:cc6xg1340:cc6xg1250:cc6xg1520 group.cgccc6x.baseName=TI C6x gcc group.cgccc6x.groupName=TI C6x GCC group.cgccc6x.isSemVer=true @@ -1644,12 +1678,17 @@ compiler.cc6xg1510.semver=15.1.0 compiler.cc6xg1510.objdumper=/opt/compiler-explorer/c6x/gcc-15.1.0/tic6x-elf/bin/tic6x-elf-objdump compiler.cc6xg1510.demangler=/opt/compiler-explorer/c6x/gcc-15.1.0/tic6x-elf/bin/tic6x-elf-c++filt +compiler.cc6xg1520.exe=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-gcc +compiler.cc6xg1520.semver=15.2.0 +compiler.cc6xg1520.objdumper=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-objdump +compiler.cc6xg1520.demangler=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-c++filt + ############################### # Cross for loongarch64 group.cloongarch64.compilers=&cgccloongarch64 # GCC for loongarch64 -group.cgccloongarch64.compilers=cloongarch64g1220:cloongarch64g1230:cloongarch64g1310:cloongarch64g1320:cloongarch64g1410:cloongarch64g1330:cloongarch64g1240:cloongarch64g1420:cloongarch64g1510:cloongarch64g1430:cloongarch64g1340:cloongarch64g1250 +group.cgccloongarch64.compilers=cloongarch64g1220:cloongarch64g1230:cloongarch64g1310:cloongarch64g1320:cloongarch64g1410:cloongarch64g1330:cloongarch64g1240:cloongarch64g1420:cloongarch64g1510:cloongarch64g1430:cloongarch64g1340:cloongarch64g1250:cloongarch64g1520 group.cgccloongarch64.baseName=loongarch64 gcc group.cgccloongarch64.groupName=loongarch64 GCC group.cgccloongarch64.isSemVer=true @@ -1714,12 +1753,17 @@ compiler.cloongarch64g1510.semver=15.1.0 compiler.cloongarch64g1510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.cloongarch64g1510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.cloongarch64g1520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-gcc +compiler.cloongarch64g1520.semver=15.2.0 +compiler.cloongarch64g1520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.cloongarch64g1520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ############################### # Cross for sh group.csh.compilers=&cgccsh # GCC for sh -group.cgccsh.compilers=cshg494:cshg950:cshg1220:cshg1230:cshg1240:cshg1250:cshg1310:cshg1320:cshg1330:cshg1340:cshg1410:cshg1420:cshg1430:cshg1510 +group.cgccsh.compilers=cshg494:cshg950:cshg1220:cshg1230:cshg1240:cshg1250:cshg1310:cshg1320:cshg1330:cshg1340:cshg1410:cshg1420:cshg1430:cshg1510:cshg1520 group.cgccsh.baseName=sh gcc group.cgccsh.groupName=sh GCC group.cgccsh.isSemVer=true @@ -1794,12 +1838,17 @@ compiler.cshg1510.semver=15.1.0 compiler.cshg1510.objdumper=/opt/compiler-explorer/sh/gcc-15.1.0/sh-unknown-elf/bin/sh-unknown-elf-objdump compiler.cshg1510.demangler=/opt/compiler-explorer/sh/gcc-15.1.0/sh-unknown-elf/bin/sh-unknown-elf-c++filt +compiler.cshg1520.exe=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-gcc +compiler.cshg1520.semver=15.2.0 +compiler.cshg1520.objdumper=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-objdump +compiler.cshg1520.demangler=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-c++filt + ############################### # Cross for s390x group.cs390x.compilers=&cgccs390x # GCC for s390x -group.cgccs390x.compilers=cgccs390x112:cs390xg1210:cs390xg1220:cs390xg1230:cs390xg1310:cs390xg1320:cs390xg1410:cs390xg1330:cs390xg1240:cs390xg1420:cs390xg1510:cs390xg1430:cs390xg1340:cs390xg1250 +group.cgccs390x.compilers=cgccs390x112:cs390xg1210:cs390xg1220:cs390xg1230:cs390xg1310:cs390xg1320:cs390xg1410:cs390xg1330:cs390xg1240:cs390xg1420:cs390xg1510:cs390xg1430:cs390xg1340:cs390xg1250:cs390xg1520 group.cgccs390x.baseName=s390x gcc group.cgccs390x.groupName=s390x GCC group.cgccs390x.isSemVer=true @@ -1872,13 +1921,18 @@ compiler.cs390xg1510.semver=15.1.0 compiler.cs390xg1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.cs390xg1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.cs390xg1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-gcc +compiler.cs390xg1520.semver=15.2.0 +compiler.cs390xg1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.cs390xg1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ############################### # Cross compilers for PPC group.cppcs.compilers=&cppc:&cppc64:&cppc64le group.cppcs.isSemVer=true group.cppcs.instructionSet=powerpc -group.cppc.compilers=cppcg48:cppcg1120:cppcg1210:cppcg1220:cppcg1230:cppcg1240:cppcg1250:cppcg1310:cppcg1320:cppcg1330:cppcg1340:cppcg1410:cppcg1420:cppcg1430:cppcg1510 +group.cppc.compilers=cppcg48:cppcg1120:cppcg1210:cppcg1220:cppcg1230:cppcg1240:cppcg1250:cppcg1310:cppcg1320:cppcg1330:cppcg1340:cppcg1410:cppcg1420:cppcg1430:cppcg1510:cppcg1520 group.cppc.groupName=POWER group.cppc.baseName=power gcc @@ -1954,7 +2008,12 @@ compiler.cppcg1510.semver=15.1.0 compiler.cppcg1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.cppcg1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt -group.cppc64.compilers=cppc64g8:cppc64g9:cppc64g1120:cppc64g1210:cppc64clang:cppc64g1220:cppc64g1230:cppc64g1310:cppc64g1320:cppc64gtrunk:cppc64g1410:cppc64g1330:cppc64g1240:cppc64g1420:cppc64g1510:cppc64g1430:cppc64g1340:cppc64g1250 +compiler.cppcg1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gcc +compiler.cppcg1520.semver=15.2.0 +compiler.cppcg1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.cppcg1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + +group.cppc64.compilers=cppc64g8:cppc64g9:cppc64g1120:cppc64g1210:cppc64clang:cppc64g1220:cppc64g1230:cppc64g1310:cppc64g1320:cppc64gtrunk:cppc64g1410:cppc64g1330:cppc64g1240:cppc64g1420:cppc64g1510:cppc64g1430:cppc64g1340:cppc64g1250:cppc64g1520 group.cppc64.groupName=POWER64 group.cppc64.baseName=POWER64 gcc @@ -2036,6 +2095,11 @@ compiler.cppc64g1510.semver=15.1.0 compiler.cppc64g1510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.cppc64g1510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.cppc64g1520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gcc +compiler.cppc64g1520.semver=15.2.0 +compiler.cppc64g1520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.cppc64g1520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.cppc64gtrunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gcc compiler.cppc64gtrunk.semver=trunk compiler.cppc64gtrunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump @@ -2050,7 +2114,7 @@ compiler.cppc64clang.semver=(snapshot) compiler.cppc64clang.isNightly=true compiler.cppc64clang.compilerCategories=clang -group.cppc64le.compilers=cppc64leg630:cppc64leg8:cppc64leg9:cppc64leg1120:cppc64leg1210:cppc64leclang:cppc64leg1220:cppc64leg1230:cppc64leg1310:cppc64leg1320:cppc64legtrunk:cppc64leg1410:cppc64leg1330:cppc64leg1240:cppc64leg1420:cppc64leg1510:cppc64leg1430:cppc64leg1340:cppc64leg1250 +group.cppc64le.compilers=cppc64leg630:cppc64leg8:cppc64leg9:cppc64leg1120:cppc64leg1210:cppc64leclang:cppc64leg1220:cppc64leg1230:cppc64leg1310:cppc64leg1320:cppc64legtrunk:cppc64leg1410:cppc64leg1330:cppc64leg1240:cppc64leg1420:cppc64leg1510:cppc64leg1430:cppc64leg1340:cppc64leg1250:cppc64leg1520 group.cppc64le.groupName=POWER64LE GCC group.cppc64le.baseName=power64le gcc @@ -2136,6 +2200,11 @@ compiler.cppc64leg1510.semver=15.1.0 compiler.cppc64leg1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.cppc64leg1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.cppc64leg1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gcc +compiler.cppc64leg1520.semver=15.2.0 +compiler.cppc64leg1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.cppc64leg1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.cppc64legtrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gcc compiler.cppc64legtrunk.semver=trunk compiler.cppc64legtrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump @@ -2162,7 +2231,7 @@ group.cgccarm.includeFlag=-I # 32 bit group.cgcc32arm.groupName=Arm 32-bit GCC group.cgcc32arm.baseName=ARM GCC -group.cgcc32arm.compilers=carmhfg54:carmg454:carmg464:carm541:carmg630:carmg640:carm710:carmg730:carmg750:carmg820:carmce820:carm831:carmg850:carm921:carm930:carm1020:carm1021:carm1030:carm1031_07:carm1031_10:carmg1050:carm1100:carm1120:carm1121:carm1130:carmg1140:carm1210:carmg1220:carmg1230:carmg1240:carmg1250:carmg1310:carmg1320:carmug1320:carmg1330:carmug1330:carmg1340:carmug1340:carmg1410:carmug1410:carmg1420:carmug1420:carmg1430:carmug1430:carmg1510:carmgtrunk +group.cgcc32arm.compilers=carmhfg54:carmg454:carmg464:carm541:carmg630:carmg640:carm710:carmg730:carmg750:carmg820:carmce820:carm831:carmg850:carm921:carm930:carm1020:carm1021:carm1030:carm1031_07:carm1031_10:carmg1050:carm1100:carm1120:carm1121:carm1130:carmg1140:carm1210:carmg1220:carmg1230:carmg1240:carmg1250:carmg1310:carmg1320:carmug1320:carmg1330:carmug1330:carmg1340:carmug1340:carmg1410:carmug1410:carmg1420:carmug1420:carmg1430:carmug1430:carmg1510:carmug1510:carmg1520:carmug1520:carmgtrunk group.cgcc32arm.isSemVer=true group.cgcc32arm.objdumper=/opt/compiler-explorer/arm/gcc-10.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump group.cgcc32arm.instructionSet=arm32 @@ -2264,6 +2333,11 @@ compiler.carmg1510.semver=15.1.0 compiler.carmg1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.carmg1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.carmg1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gcc +compiler.carmg1520.semver=15.2.0 +compiler.carmg1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.carmg1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + compiler.carmug1320.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-13.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-gcc compiler.carmug1320.name=ARM GCC 13.2.0 (unknown-eabi) compiler.carmug1320.semver=13.2.0 @@ -2300,6 +2374,18 @@ compiler.carmug1430.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-14.3.0/ compiler.carmug1430.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-14.3.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt compiler.carmug1430.name=ARM GCC 14.3.0 (unknown-eabi) +compiler.carmug1510.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-gcc +compiler.carmug1510.semver=15.1.0 +compiler.carmug1510.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-objdump +compiler.carmug1510.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt +compiler.carmug1510.name=ARM GCC 15.1.0 (unknown-eabi) + +compiler.carmug1520.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-gcc +compiler.carmug1520.semver=15.2.0 +compiler.carmug1520.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-objdump +compiler.carmug1520.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt +compiler.carmug1520.name=ARM GCC 15.2.0 (unknown-eabi) + compiler.carmce820.exe=/opt/compiler-explorer/arm-wince/gcc-ce-8.2.0/bin/arm-mingw32ce-gcc compiler.carmce820.semver=8.2.0 (WinCE) compiler.carmce820.supportsBinary=false @@ -2347,7 +2433,7 @@ compiler.carmgtrunk.isNightly=true # 64 bit group.cgcc64arm.groupName=ARM64 gcc group.cgcc64arm.baseName=ARM64 GCC -group.cgcc64arm.compilers=caarchg54:carm64g494:carm64g550:carm64g630:carm64g640:carm64g730:carm64g750:carm64g820:carm64g850:carm64g930:carm64g940:carm64g950:carm64g1020:carm64g1030:carm64g1040:carm64g1100:carm64g1120:carm64g1130:carm64g1140:carm64g1210:carm64gtrunk:carm64g1220:carm64g1230:carm64g1310:carm64g1050:carm64g1320:carm64g1410:carm64g1330:carm64g1240:carm64g1420:carm64g1510:carm64g1430:carm64g1340:carm64g1250 +group.cgcc64arm.compilers=caarchg54:carm64g494:carm64g550:carm64g630:carm64g640:carm64g730:carm64g750:carm64g820:carm64g850:carm64g930:carm64g940:carm64g950:carm64g1020:carm64g1030:carm64g1040:carm64g1100:carm64g1120:carm64g1130:carm64g1140:carm64g1210:carm64gtrunk:carm64g1220:carm64g1230:carm64g1310:carm64g1050:carm64g1320:carm64g1410:carm64g1330:carm64g1240:carm64g1420:carm64g1510:carm64g1430:carm64g1340:carm64g1250:carm64g1520 group.cgcc64arm.isSemVer=true group.cgcc64arm.objdumper=/opt/compiler-explorer/arm64/gcc-10.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/bin/objdump group.cgcc64arm.instructionSet=aarch64 @@ -2470,6 +2556,11 @@ compiler.carm64g1510.semver=15.1.0 compiler.carm64g1510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.carm64g1510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.carm64g1520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc +compiler.carm64g1520.semver=15.2.0 +compiler.carm64g1520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.carm64g1520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + compiler.carm64gtrunk.exe=/opt/compiler-explorer/arm64/gcc-trunk/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc compiler.carm64gtrunk.semver=trunk compiler.carm64gtrunk.isNightly=true @@ -2644,7 +2735,7 @@ compiler.carduinomega189.objdumper=/opt/compiler-explorer/avr/arduino-1.8.9/hard ################################ # GCC for MSP -group.cmsp.compilers=cmsp430g453:cmsp430g530:cmsp430g621:cmsp430g1210:cmsp430g1220:cmsp430g1230:cmsp430g1310:cmsp430g1320:cmsp430g1410:cmsp430g1330:cmsp430g1240:cmsp430g1420:cmsp430g1510:cmsp430g1430:cmsp430g1340:cmsp430g1250 +group.cmsp.compilers=cmsp430g453:cmsp430g530:cmsp430g621:cmsp430g1210:cmsp430g1220:cmsp430g1230:cmsp430g1310:cmsp430g1320:cmsp430g1410:cmsp430g1330:cmsp430g1240:cmsp430g1420:cmsp430g1510:cmsp430g1430:cmsp430g1340:cmsp430g1250:cmsp430g1520 group.cmsp.groupName=MSP GCC group.cmsp.baseName=MSP430 gcc group.cmsp.isSemVer=true @@ -2723,6 +2814,11 @@ compiler.cmsp430g1510.semver=15.1.0 compiler.cmsp430g1510.objdumper=/opt/compiler-explorer/msp430/gcc-15.1.0/msp430-unknown-elf/bin/msp430-unknown-elf-objdump compiler.cmsp430g1510.demangler=/opt/compiler-explorer/msp430/gcc-15.1.0/msp430-unknown-elf/bin/msp430-unknown-elf-c++filt +compiler.cmsp430g1520.exe=/opt/compiler-explorer/msp430/gcc-15.2.0/msp430-unknown-elf/bin/msp430-unknown-elf-gcc +compiler.cmsp430g1520.semver=15.2.0 +compiler.cmsp430g1520.objdumper=/opt/compiler-explorer/msp430/gcc-15.2.0/msp430-unknown-elf/bin/msp430-unknown-elf-objdump +compiler.cmsp430g1520.demangler=/opt/compiler-explorer/msp430/gcc-15.2.0/msp430-unknown-elf/bin/msp430-unknown-elf-c++filt + ################################ # CL430 (Texas Instruments MSP430 compiler) group.ccl430.compilers=ccl4302161 @@ -2741,7 +2837,7 @@ compiler.ccl4302161.versionFlag=-version ################################ # GCC for AVR -group.cavr.compilers=cavrg454:cavrg464:cavrg540:cavrg920:cavrg930:cavrg1030:cavrg1100:cavrg1210:cavrg1220:cavrg1230:cavrg1240:cavrg1250:cavrg1310:cavrg1320:cavrg1330:cavrg1340:cavrg1410:cavrg1420:cavrg1430:cavrg1510 +group.cavr.compilers=cavrg454:cavrg464:cavrg540:cavrg920:cavrg930:cavrg1030:cavrg1100:cavrg1210:cavrg1220:cavrg1230:cavrg1240:cavrg1250:cavrg1310:cavrg1320:cavrg1330:cavrg1340:cavrg1410:cavrg1420:cavrg1430:cavrg1510:cavrg1520 group.cavr.groupName=AVR GCC group.cavr.baseName=AVR gcc group.cavr.isSemVer=true @@ -2837,6 +2933,11 @@ compiler.cavrg1510.semver=15.1.0 compiler.cavrg1510.objdumper=/opt/compiler-explorer/avr/gcc-15.1.0/avr/bin/avr-objdump compiler.cavrg1510.demangler=/opt/compiler-explorer/avr/gcc-15.1.0/avr/bin/avr-c++filt +compiler.cavrg1520.exe=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-gcc +compiler.cavrg1520.semver=15.2.0 +compiler.cavrg1520.objdumper=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-objdump +compiler.cavrg1520.demangler=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-c++filt + ############################### # Cross compilers for MIPS group.cmipss.compilers=&cmips:&cmipsel:&cmips64:&cmips64el:&mips-cclang:&mipsel-cclang:&mips64-cclang:&mips64el-cclang @@ -2993,7 +3094,7 @@ compiler.mips64el-cclang1300.semver=13.0.0 # GCC for all MIPS ## MIPS -group.cmips.compilers=cmips5:cmipsg494:cmipsg550:cmips930:cmipsg950:cmips1120:cmipsg1210:cmipsg1220:cmipsg1230:cmipsg1240:cmipsg1250:cmipsg1310:cmipsg1320:cmipsg1330:cmipsg1340:cmipsg1410:cmipsg1420:cmipsg1430:cmipsg1510 +group.cmips.compilers=cmips5:cmipsg494:cmipsg550:cmips930:cmipsg950:cmips1120:cmipsg1210:cmipsg1220:cmipsg1230:cmipsg1240:cmipsg1250:cmipsg1310:cmipsg1320:cmipsg1330:cmipsg1340:cmipsg1410:cmipsg1420:cmipsg1430:cmipsg1510:cmipsg1520 group.cmips.groupName=MIPS GCC group.cmips.baseName=mips gcc @@ -3089,9 +3190,14 @@ compiler.cmipsg1510.semver=15.1.0 compiler.cmipsg1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.cmipsg1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.cmipsg1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc +compiler.cmipsg1520.semver=15.2.0 +compiler.cmipsg1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.cmipsg1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ## MIPS64 group.cmips64.groupName=MIPS64 GCC -group.cmips64.compilers=cmips64g494:cmips64g550:cmips64g950:cmips64g1210:cmips64g1220:cmips64g1230:cmips64g1310:cmips64g1320:cmips64g1410:cmips64g1330:cmips64g1240:cmips64g1420:cmips64g1510:cmips64g1430:cmips64g1340:cmips64g1250:cmips564:cmips112064 +group.cmips64.compilers=cmips64g494:cmips64g550:cmips64g950:cmips64g1210:cmips64g1220:cmips64g1230:cmips64g1310:cmips64g1320:cmips64g1410:cmips64g1330:cmips64g1240:cmips64g1420:cmips64g1510:cmips64g1430:cmips64g1340:cmips64g1250:cmips64g1520:cmips564:cmips112064 group.cmips64.baseName=mips64 gcc compiler.cmips64g494.exe=/opt/compiler-explorer/mips64/gcc-4.9.4/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gcc @@ -3181,9 +3287,14 @@ compiler.cmips64g1510.semver=15.1.0 compiler.cmips64g1510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.cmips64g1510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.cmips64g1520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gcc +compiler.cmips64g1520.semver=15.2.0 +compiler.cmips64g1520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.cmips64g1520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ## MIPS EL group.cmipsel.groupName=MIPSEL GCC -group.cmipsel.compilers=cmips5el:cmipselg494:cmipselg550:cmipselg950:cmipselg1210:cmipselg1220:cmipselg1230:cmipselg1240:cmipselg1250:cmipselg1310:cmipselg1320:cmipselg1330:cmipselg1340:cmipselg1410:cmipselg1420:cmipselg1430:cmipselg1510 +group.cmipsel.compilers=cmips5el:cmipselg494:cmipselg550:cmipselg950:cmipselg1210:cmipselg1220:cmipselg1230:cmipselg1240:cmipselg1250:cmipselg1310:cmipselg1320:cmipselg1330:cmipselg1340:cmipselg1410:cmipselg1420:cmipselg1430:cmipselg1510:cmipselg1520 group.cmipsel.baseName=mips (el) gcc compiler.cmipselg494.exe=/opt/compiler-explorer/mipsel/gcc-4.9.4/mipsel-unknown-linux-gnu/bin/mipsel-unknown-linux-gnu-gcc @@ -3269,9 +3380,14 @@ compiler.cmipselg1510.semver=15.1.0 compiler.cmipselg1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.cmipselg1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.cmipselg1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gcc +compiler.cmipselg1520.semver=15.2.0 +compiler.cmipselg1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.cmipselg1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ## MIPS64 EL group.cmips64el.groupName=MIPS64EL GCC -group.cmips64el.compilers=cmips64elg494:cmips64elg550:cmips64elg950:cmips64elg1210:cmips64elg1220:cmips64elg1230:cmips64elg1310:cmips64elg1320:cmips64elg1410:cmips64elg1330:cmips64elg1240:cmips64elg1420:cmips64elg1510:cmips64elg1430:cmips64elg1340:cmips64elg1250:cmips564el +group.cmips64el.compilers=cmips64elg494:cmips64elg550:cmips64elg950:cmips64elg1210:cmips64elg1220:cmips64elg1230:cmips64elg1310:cmips64elg1320:cmips64elg1410:cmips64elg1330:cmips64elg1240:cmips64elg1420:cmips64elg1510:cmips64elg1430:cmips64elg1340:cmips64elg1250:cmips64elg1520:cmips564el group.cmips64el.baseName=mips64 (el) gcc compiler.cmips64elg494.exe=/opt/compiler-explorer/mips64el/gcc-4.9.4/mips64el-unknown-linux-gnu/bin/mips64el-unknown-linux-gnu-gcc @@ -3357,6 +3473,11 @@ compiler.cmips64elg1510.semver=15.1.0 compiler.cmips64elg1510.objdumper=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump compiler.cmips64elg1510.demangler=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt +compiler.cmips64elg1520.exe=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-gcc +compiler.cmips64elg1520.semver=15.2.0 +compiler.cmips64elg1520.objdumper=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump +compiler.cmips64elg1520.demangler=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt + ############################### # GCC for nanoMIPS group.cnanomips.compilers=cnanomips630 @@ -3392,7 +3513,7 @@ group.rvcgcc.supportsBinary=true group.rvcgcc.supportsBinaryObject=true ## GCC for RISC-V 64-bits -group.rv64-cgccs.compilers=rv64-cgcctrunk:rv64-cgcc1230:rv64-cgcc1210:rv64-cgcc1140:rv64-cgcc1130:rv64-cgcc1220:rv64-cgcc1120:rv64-cgcc1030:rv64-cgcc1020:rv64-cgcc940:rv64-cgcc850:rv64-cgcc820:rv64-cgcc1310:rv64-cgcc1320:rv64-cgcc1410:rv64-cgcc1330:rv64-cgcc1240:rv64-cgcc1420:rv64-cgcc1510:rv64-cgcc1430:rv64-cgcc1340:rv64-cgcc1250 +group.rv64-cgccs.compilers=rv64-cgcctrunk:rv64-cgcc1230:rv64-cgcc1210:rv64-cgcc1140:rv64-cgcc1130:rv64-cgcc1220:rv64-cgcc1120:rv64-cgcc1030:rv64-cgcc1020:rv64-cgcc940:rv64-cgcc850:rv64-cgcc820:rv64-cgcc1310:rv64-cgcc1320:rv64-cgcc1410:rv64-cgcc1330:rv64-cgcc1240:rv64-cgcc1420:rv64-cgcc1510:rv64-cgcc1430:rv64-cgcc1340:rv64-cgcc1250:rv64-cgcc1520 group.rv64-cgccs.groupName=RISC-V (64-bits) gcc group.rv64-cgccs.baseName=RISC-V (64-bits) gcc @@ -3494,6 +3615,11 @@ compiler.rv64-cgcc1510.semver=15.1.0 compiler.rv64-cgcc1510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.rv64-cgcc1510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.rv64-cgcc1520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gcc +compiler.rv64-cgcc1520.semver=15.2.0 +compiler.rv64-cgcc1520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.rv64-cgcc1520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + compiler.rv64-cgcctrunk.exe=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gcc compiler.rv64-cgcctrunk.semver=(trunk) compiler.rv64-cgcctrunk.objdumper=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump @@ -3501,7 +3627,7 @@ compiler.rv64-cgcctrunk.demangler=/opt/compiler-explorer/riscv64/gcc-trunk/riscv compiler.rv64-cgcctrunk.isNightly=true ## GCC for RISC-V 32-bits -group.rv32-cgccs.compilers=rv32-cgcctrunk:rv32-cgcc1220:rv32-cgcc1210:rv32-cgcc1140:rv32-cgcc1130:rv32-cgcc1120:rv32-cgcc1030:rv32-cgcc1020:rv32-cgcc940:rv32-cgcc850:rv32-cgcc820:rv32-cgcc1310:rv32-cgcc1230:rv32-cgcc1320:rv32-cgcc1410:rv32-cgcc1330:rv32-cgcc1240:rv32-cgcc1420:rv32-cgcc1510:rv32-cgcc1430:rv32-cgcc1340:rv32-cgcc1250 +group.rv32-cgccs.compilers=rv32-cgcctrunk:rv32-cgcc1220:rv32-cgcc1210:rv32-cgcc1140:rv32-cgcc1130:rv32-cgcc1120:rv32-cgcc1030:rv32-cgcc1020:rv32-cgcc940:rv32-cgcc850:rv32-cgcc820:rv32-cgcc1310:rv32-cgcc1230:rv32-cgcc1320:rv32-cgcc1410:rv32-cgcc1330:rv32-cgcc1240:rv32-cgcc1420:rv32-cgcc1510:rv32-cgcc1430:rv32-cgcc1340:rv32-cgcc1250:rv32-cgcc1520 group.rv32-cgccs.groupName=RISC-V (32-bits) gcc group.rv32-cgccs.baseName=RISC-V (32-bits) gcc @@ -3603,6 +3729,11 @@ compiler.rv32-cgcc1510.semver=15.1.0 compiler.rv32-cgcc1510.objdumper=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.rv32-cgcc1510.demangler=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt +compiler.rv32-cgcc1520.exe=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gcc +compiler.rv32-cgcc1520.semver=15.2.0 +compiler.rv32-cgcc1520.objdumper=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump +compiler.rv32-cgcc1520.demangler=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt + compiler.rv32-cgcctrunk.exe=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gcc compiler.rv32-cgcctrunk.semver=(trunk) compiler.rv32-cgcctrunk.isNightly=true @@ -3712,63 +3843,6 @@ compiler.cesp32s3g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2 compiler.cesp32s3g20241119.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s3-elf-objdump compiler.cesp32s3g20241119.name=Xtensa ESP32-S3 gcc 14.2.0 (20241119) -################################ -# Windows Compilers -group.ccl.compilers=&ccl19:&ccl19_2015_u3:&ccl_new -group.ccl.compilerType=wine-vc -group.ccl.includeFlag=/I -group.ccl.versionFlag=/? -group.ccl.versionRe=^Microsoft \(R\) C/C\+\+.*$ -group.ccl.isSemVer=true -group.ccl.supportsBinary=false -group.ccl.objdumper= -group.ccl.compilerCategories=msvc -group.ccl.instructionSet=amd64 -group.ccl19.groupName=WINE MSVC 2017 -group.ccl19.compilers=ccl19_64:ccl19_32:ccl19_arm -group.ccl19.options=/I/opt/compiler-explorer/windows/10.0.10240.0/ucrt/ /I/opt/compiler-explorer/windows/19.10.25017/lib/native/include/ /TC -compiler.ccl19_64.exe=/opt/compiler-explorer/windows/19.10.25017/lib/native/bin/amd64/cl.exe -compiler.ccl19_64.name=x64 msvc v19.10 (WINE) -compiler.ccl19_64.semver=19.10.25017 -compiler.ccl19_32.exe=/opt/compiler-explorer/windows/19.10.25017/lib/native/bin/amd64_x86/cl.exe -compiler.ccl19_32.name=x86 msvc v19.10 (WINE) -compiler.ccl19_32.semver=19.10.25017 -compiler.ccl19_arm.exe=/opt/compiler-explorer/windows/19.10.25017/lib/native/bin/amd64_arm/cl.exe -compiler.ccl19_arm.name=ARM msvc v19.10 (WINE) -compiler.ccl19_arm.semver=19.10.25017 -compiler.ccl19_arm.instructionSet=arm32 - -group.ccl19_2015_u3.groupName=WINE MSVC 2015 -group.ccl19_2015_u3.compilers=ccl19_2015_u3_64:ccl19_2015_u3_32:ccl19_2015_u3_arm -group.ccl19_2015_u3.options=/I/opt/compiler-explorer/windows/10.0.10240.0/ucrt/ /I/opt/compiler-explorer/windows/19.00.24210/include/ /TC -compiler.ccl19_2015_u3_64.exe=/opt/compiler-explorer/windows/19.00.24210/bin/amd64/cl.exe -compiler.ccl19_2015_u3_64.name=x64 msvc v19.0 (WINE) -compiler.ccl19_2015_u3_64.semver=19.00.24210 -compiler.ccl19_2015_u3_32.exe=/opt/compiler-explorer/windows/19.00.24210/bin/amd64_x86/cl.exe -compiler.ccl19_2015_u3_32.name=x86 msvc v19.0 (WINE) -compiler.ccl19_2015_u3_32.semver=19.00.24210 -compiler.ccl19_2015_u3_arm.exe=/opt/compiler-explorer/windows/19.00.24210/bin/amd64_arm/cl.exe -compiler.ccl19_2015_u3_arm.name=ARM msvc v19.0 (WINE) -compiler.ccl19_2015_u3_arm.semver=19.00.24210 -compiler.ccl19_2015_u3_arm.instructionSet=arm32 - -group.ccl_new.groupName=WINE MSVC 2017 -group.ccl_new.compilers=ccl_new_64:ccl_new_32:ccl_new_arm32:ccl_new_arm64 -group.ccl_new.options=/I/opt/compiler-explorer/windows/10.0.10240.0/ucrt/ /I/opt/compiler-explorer/windows/19.14.26423/include/ /TC -compiler.ccl_new_64.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/x64/cl.exe -compiler.ccl_new_64.name=x64 msvc v19.14 (WINE) -compiler.ccl_new_64.semver=19.14.26423 -compiler.ccl_new_32.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/x86/cl.exe -compiler.ccl_new_32.name=x86 msvc v19.14 (WINE) -compiler.ccl_new_32.semver=19.14.26423 -compiler.ccl_new_arm32.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/arm/cl.exe -compiler.ccl_new_arm32.name=ARM msvc v19.14 (WINE) -compiler.ccl_new_arm32.semver=19.14.26423 -compiler.ccl_new_arm32.instructionSet=arm32 -compiler.ccl_new_arm64.exe=/opt/compiler-explorer/windows/19.14.26423/bin/Hostx64/arm64/cl.exe -compiler.ccl_new_arm64.name=ARM64 msvc v19.14 (WINE) -compiler.ccl_new_arm64.semver=19.14.26423 -compiler.ccl_new_arm64.instructionSet=aarch64 ################################# # cc65 compilers diff --git a/etc/config/c.amazonwin.properties b/etc/config/c.amazonwin.properties index 837cbd70d..7ddb667a1 100644 --- a/etc/config/c.amazonwin.properties +++ b/etc/config/c.amazonwin.properties @@ -49,7 +49,7 @@ compiler.cmingw64_ucrt_clang_1406.semver=14.0.6 compiler.cmingw64_ucrt_clang_1403.exe=Z:/compilers/mingw-w64-11.3.0-14.0.3-10.0.0-ucrt-r3/bin/clang.exe compiler.cmingw64_ucrt_clang_1403.semver=14.0.3 -group.vc.compilers=&vc_x86:&vc_x64:&vc_arm64 +group.vc.compilers=&vc_x86:&vc_x64:&vc_arm64:&vc_arm32 group.vc.options=/EHsc /utf-8 group.vc.compilerType=win32-vc group.vc.needsMulti=false @@ -66,22 +66,125 @@ group.vc.licenseLink=https://visualstudio.microsoft.com/license-terms/vs2022-ga- group.vc.licensePreamble=The use of this compiler is only permitted for internal evaluation purposes and is otherwise governed by the MSVC License Agreement. group.vc.licenseInvasive=true -group.vc_x86.compilers=vc_v19_latest_x86:vc_v19_24_VS16_4_x86:vc_v19_25_VS16_5_x86:vc_v19_27_VS16_7_x86:vc_v19_28_VS16_8_x86:vc_v19_28_VS16_9_x86:vc_v19_29_VS16_10_x86:vc_v19_29_VS16_11_x86:vc_v19_20_VS16_0_x86:vc_v19_21_VS16_1_x86:vc_v19_22_VS16_2_x86:vc_v19_23_VS16_3_x86:vc_v19_26_VS16_6_x86:vc_v19_30_VS17_0_x86:vc_v19_31_VS17_1_x86:vc_v19_33_VS17_3_x86:vc_v19_35_VS17_5_x86:vc_v19_37_VS17_7_x86:vc_v19_32_VS17_2_x86:vc_v19_34_VS17_4_x86:vc_v19_36_VS17_6_x86:vc_v19_38_VS17_8_x86:vc_v19_39_VS17_9_x86:vc_v19_40_VS17_10_x86:vc_v19_41_VS17_11_x86:vc_v19_42_VS17_12_x86:vc_v19_43_VS17_13_x86 +group.vc_x86.compilers=vc_v19_latest_x86:ccl19_2015_u3_32_exwine:ccl19_32_exwine:ccl_new_32_exwine:vc_v19_24_VS16_4_x86:vc_v19_25_VS16_5_x86:vc_v19_27_VS16_7_x86:vc_v19_28_VS16_8_x86:vc_v19_28_VS16_9_x86:vc_v19_29_VS16_10_x86:vc_v19_29_VS16_11_x86:vc_v19_20_VS16_0_x86:vc_v19_21_VS16_1_x86:vc_v19_22_VS16_2_x86:vc_v19_23_VS16_3_x86:vc_v19_26_VS16_6_x86:vc_v19_30_VS17_0_x86:vc_v19_31_VS17_1_x86:vc_v19_33_VS17_3_x86:vc_v19_35_VS17_5_x86:vc_v19_37_VS17_7_x86:vc_v19_32_VS17_2_x86:vc_v19_34_VS17_4_x86:vc_v19_36_VS17_6_x86:vc_v19_38_VS17_8_x86:vc_v19_39_VS17_9_x86:vc_v19_40_VS17_10_x86:vc_v19_41_VS17_11_x86:vc_v19_42_VS17_12_x86:vc_v19_43_VS17_13_x86 group.vc_x86.groupName=MSVC x86 group.vc_x86.supportsBinary=true group.vc_x86.supportsExecute=true -group.vc_x64.compilers=vc_v19_latest_x64:vc_v19_24_VS16_4_x64:vc_v19_25_VS16_5_x64:vc_v19_27_VS16_7_x64:vc_v19_28_VS16_8_x64:vc_v19_28_VS16_9_x64:vc_v19_29_VS16_10_x64:vc_v19_29_VS16_11_x64:vc_v19_20_VS16_0_x64:vc_v19_21_VS16_1_x64:vc_v19_22_VS16_2_x64:vc_v19_23_VS16_3_x64:vc_v19_26_VS16_6_x64:vc_v19_30_VS17_0_x64:vc_v19_31_VS17_1_x64:vc_v19_33_VS17_3_x64:vc_v19_35_VS17_5_x64:vc_v19_37_VS17_7_x64:vc_v19_32_VS17_2_x64:vc_v19_34_VS17_4_x64:vc_v19_36_VS17_6_x64:vc_v19_38_VS17_8_x64:vc_v19_39_VS17_9_x64:vc_v19_40_VS17_10_x64:vc_v19_41_VS17_11_x64:vc_v19_42_VS17_12_x64:vc_v19_43_VS17_13_x64 +group.vc_x64.compilers=vc_v19_latest_x64:ccl19_2015_u3_64_exwine:ccl19_64_exwine:ccl_new_64_exwine:vc_v19_24_VS16_4_x64:vc_v19_25_VS16_5_x64:vc_v19_27_VS16_7_x64:vc_v19_28_VS16_8_x64:vc_v19_28_VS16_9_x64:vc_v19_29_VS16_10_x64:vc_v19_29_VS16_11_x64:vc_v19_20_VS16_0_x64:vc_v19_21_VS16_1_x64:vc_v19_22_VS16_2_x64:vc_v19_23_VS16_3_x64:vc_v19_26_VS16_6_x64:vc_v19_30_VS17_0_x64:vc_v19_31_VS17_1_x64:vc_v19_33_VS17_3_x64:vc_v19_35_VS17_5_x64:vc_v19_37_VS17_7_x64:vc_v19_32_VS17_2_x64:vc_v19_34_VS17_4_x64:vc_v19_36_VS17_6_x64:vc_v19_38_VS17_8_x64:vc_v19_39_VS17_9_x64:vc_v19_40_VS17_10_x64:vc_v19_41_VS17_11_x64:vc_v19_42_VS17_12_x64:vc_v19_43_VS17_13_x64 group.vc_x64.groupName=MSVC x64 group.vc_x64.supportsBinary=true group.vc_x64.supportsExecute=true -group.vc_arm64.compilers=vc_v19_latest_arm64:vc_v19_28_VS16_9_arm64:vc_v19_29_VS16_10_arm64:vc_v19_29_VS16_11_arm64:vc_v19_25_VS16_5_arm64:vc_v19_27_VS16_7_arm64:vc_v19_24_VS16_4_arm64:vc_v19_28_VS16_8_arm64:vc_v19_20_VS16_0_arm64:vc_v19_21_VS16_1_arm64:vc_v19_22_VS16_2_arm64:vc_v19_23_VS16_3_arm64:vc_v19_26_VS16_6_arm64:vc_v19_30_VS17_0_arm64:vc_v19_31_VS17_1_arm64:vc_v19_33_VS17_3_arm64:vc_v19_35_VS17_5_arm64:vc_v19_37_VS17_7_arm64:vc_v19_32_VS17_2_arm64:vc_v19_34_VS17_4_arm64:vc_v19_36_VS17_6_arm64:vc_v19_38_VS17_8_arm64:vc_v19_39_VS17_9_arm64:vc_v19_40_VS17_10_arm64:vc_v19_41_VS17_11_arm64:vc_v19_42_VS17_12_arm64:vc_v19_43_VS17_13_arm64 +group.vc_arm64.compilers=vc_v19_latest_arm64:ccl_new_arm64_exwine:vc_v19_28_VS16_9_arm64:vc_v19_29_VS16_10_arm64:vc_v19_29_VS16_11_arm64:vc_v19_25_VS16_5_arm64:vc_v19_27_VS16_7_arm64:vc_v19_24_VS16_4_arm64:vc_v19_28_VS16_8_arm64:vc_v19_20_VS16_0_arm64:vc_v19_21_VS16_1_arm64:vc_v19_22_VS16_2_arm64:vc_v19_23_VS16_3_arm64:vc_v19_26_VS16_6_arm64:vc_v19_30_VS17_0_arm64:vc_v19_31_VS17_1_arm64:vc_v19_33_VS17_3_arm64:vc_v19_35_VS17_5_arm64:vc_v19_37_VS17_7_arm64:vc_v19_32_VS17_2_arm64:vc_v19_34_VS17_4_arm64:vc_v19_36_VS17_6_arm64:vc_v19_38_VS17_8_arm64:vc_v19_39_VS17_9_arm64:vc_v19_40_VS17_10_arm64:vc_v19_41_VS17_11_arm64:vc_v19_42_VS17_12_arm64:vc_v19_43_VS17_13_arm64 group.vc_arm64.groupName=MSVC arm64 group.vc_arm64.isSemVer=true group.vc_arm64.supportsBinary=false group.vc_arm64.supportsBinaryObject=false group.vc_arm64.supportsExecute=false +group.vc_arm64.instructionSet=aarch64 + +################ +# Converted from WINE +group.vc_arm32.compilers=ccl19_arm_exwine:ccl19_2015_u3_arm_exwine:ccl_new_arm32_exwine +group.vc_arm32.groupName=MSVC arm32 +group.vc_arm32.supportsBinary=false +group.vc_arm32.supportsBinaryObject=false +group.vc_arm32.supportsExecute=false +group.vc_arm32.instructionSet=arm32 + +compiler.ccl19_2015_u3_32_exwine.supportsBinary=false +compiler.ccl19_2015_u3_32_exwine.supportsBinaryObject=false +compiler.ccl19_2015_u3_32_exwine.supportsExecute=false +compiler.ccl19_2015_u3_32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.00.24210/bin/amd64_x86/cl.exe +compiler.ccl19_2015_u3_32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/lib +compiler.ccl19_2015_u3_32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl19_2015_u3_32_exwine.name=x86 msvc v19.0 (ex-WINE) +compiler.ccl19_2015_u3_32_exwine.semver=19.00.24210 +compiler.ccl19_2015_u3_32_exwine.alias=ccl19_2015_u3_32 + +compiler.ccl19_2015_u3_64_exwine.supportsBinary=false +compiler.ccl19_2015_u3_64_exwine.supportsBinaryObject=false +compiler.ccl19_2015_u3_64_exwine.supportsExecute=false +compiler.ccl19_2015_u3_64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.00.24210/bin/amd64/cl.exe +compiler.ccl19_2015_u3_64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/lib +compiler.ccl19_2015_u3_64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl19_2015_u3_64_exwine.name=x64 msvc v19.0 (ex-WINE) +compiler.ccl19_2015_u3_64_exwine.semver=19.00.24210 +compiler.ccl19_2015_u3_64_exwine.alias=ccl19_2015_u3_64 + +compiler.ccl19_2015_u3_arm_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.00.24210/bin/amd64_arm/cl.exe +compiler.ccl19_2015_u3_arm_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/lib +compiler.ccl19_2015_u3_arm_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.00.24210/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl19_2015_u3_arm_exwine.name=ARM msvc v19.0 (ex-WINE) +compiler.ccl19_2015_u3_arm_exwine.semver=19.00.24210 +compiler.ccl19_2015_u3_arm_exwine.alias=ccl19_2015_u3_arm + +compiler.ccl19_32_exwine.supportsBinary=false +compiler.ccl19_32_exwine.supportsBinaryObject=false +compiler.ccl19_32_exwine.supportsExecute=false +compiler.ccl19_32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/bin/amd64_x86/cl.exe +compiler.ccl19_32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/lib +compiler.ccl19_32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl19_32_exwine.name=x86 msvc v19.10 (ex-WINE) +compiler.ccl19_32_exwine.semver=19.10.25017 +compiler.ccl19_32_exwine.alias=ccl19_32 + +compiler.ccl19_64_exwine.supportsBinary=false +compiler.ccl19_64_exwine.supportsBinaryObject=false +compiler.ccl19_64_exwine.supportsExecute=false +compiler.ccl19_64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/bin/amd64/cl.exe +compiler.ccl19_64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/lib +compiler.ccl19_64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl19_64_exwine.name=x64 msvc v19.10 (ex-WINE) +compiler.ccl19_64_exwine.semver=19.10.25017 +compiler.ccl19_64_exwine.alias=ccl19_64 + +compiler.ccl19_arm_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/bin/amd64_arm/cl.exe +compiler.ccl19_arm_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/lib +compiler.ccl19_arm_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.10.25017/lib/native/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl19_arm_exwine.name=ARM msvc v19.10 (ex-WINE) +compiler.ccl19_arm_exwine.semver=19.10.25017 +compiler.ccl19_arm_exwine.instructionSet=arm32 +compiler.ccl19_arm_exwine.alias=ccl19_arm + +compiler.ccl_new_32_exwine.supportsBinary=false +compiler.ccl_new_32_exwine.supportsBinaryObject=false +compiler.ccl_new_32_exwine.supportsExecute=false +compiler.ccl_new_32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/x86/cl.exe +compiler.ccl_new_32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.ccl_new_32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl_new_32_exwine.name=x86 msvc v19.14 (ex-WINE) +compiler.ccl_new_32_exwine.semver=19.14.26423 +compiler.ccl_new_32_exwine.alias=ccl_new_32 + +compiler.ccl_new_64_exwine.supportsBinary=false +compiler.ccl_new_64_exwine.supportsBinaryObject=false +compiler.ccl_new_64_exwine.supportsExecute=false +compiler.ccl_new_64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/x64/cl.exe +compiler.ccl_new_64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.ccl_new_64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl_new_64_exwine.name=x64 msvc v19.14 (ex-WINE) +compiler.ccl_new_64_exwine.semver=19.14.26423 +compiler.ccl_new_64_exwine.alias=ccl_new_64 + +compiler.ccl_new_arm32_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/arm/cl.exe +compiler.ccl_new_arm32_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.ccl_new_arm32_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl_new_arm32_exwine.name=ARM msvc v19.14 (ex-WINE) +compiler.ccl_new_arm32_exwine.semver=19.14.26423 +compiler.ccl_new_arm32_exwine.instructionSet=arm32 +compiler.ccl_new_arm32_exwine.alias=ccl_new_arm32 + +compiler.ccl_new_arm64_exwine.exe=Z:/compilers/msvc-legacy-from-wine/19.14.26423/bin/Hostx64/arm64/cl.exe +compiler.ccl_new_arm64_exwine.libPath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/lib +compiler.ccl_new_arm64_exwine.includePath=Z:/compilers/msvc-legacy-from-wine/19.14.26423/include;Z:/compilers/msvc-legacy-from-wine/10.0.10240.0/ucrt +compiler.ccl_new_arm64_exwine.name=ARM64 msvc v19.14 (ex-WINE) +compiler.ccl_new_arm64_exwine.semver=19.14.26423 +compiler.ccl_new_arm64_exwine.alias=ccl_new_arm64 + +# end of WINE conversion +################ compiler.vc_v19_20_VS16_0_x86.exe=Z:/compilers/msvc/14.20.27508-14.20.27525.0/bin/Hostx64/x86/cl.exe compiler.vc_v19_20_VS16_0_x86.libPath=Z:/compilers/msvc/14.20.27508-14.20.27525.0/lib;Z:/compilers/msvc/14.20.27508-14.20.27525.0/lib/x86;Z:/compilers/msvc/14.20.27508-14.20.27525.0/atlmfc/lib/x86;Z:/compilers/msvc/14.20.27508-14.20.27525.0/ifc/x86;Z:/compilers/windows-kits-10/lib/10.0.22621.0/ucrt/x86;Z:/compilers/windows-kits-10/lib/10.0.22621.0/um/x86; diff --git a/etc/config/c3.amazon.properties b/etc/config/c3.amazon.properties index a6a59b25e..2daf7c4c2 100644 --- a/etc/config/c3.amazon.properties +++ b/etc/config/c3.amazon.properties @@ -1,10 +1,10 @@ compilers=&c3c compilerType=c3c -defaultCompiler=c3c072 +defaultCompiler=c3c074 supportsBinary=false supportsBinaryObject=false supportsExecute=false -group.c3c.compilers=c3c04:c3c050:c3c055:c3c060:c3c061:c3c062:c3c063:c3c064:c3c065:c3c066:c3c067:c3c068:c3c070:c3c071:c3c072 +group.c3c.compilers=c3c04:c3c050:c3c055:c3c060:c3c061:c3c062:c3c063:c3c064:c3c065:c3c066:c3c067:c3c068:c3c070:c3c071:c3c072:c3c073:c3c074 group.c3c.isSemVer=true group.c3c.baseName=c3 @@ -53,3 +53,9 @@ compiler.c3c071.exe=/opt/compiler-explorer/c3-0.7.1/c3c compiler.c3c072.semver=0.7.2 compiler.c3c072.exe=/opt/compiler-explorer/c3-0.7.2/c3c + +compiler.c3c073.semver=0.7.3 +compiler.c3c073.exe=/opt/compiler-explorer/c3-0.7.3/c3c + +compiler.c3c074.semver=0.7.4 +compiler.c3c074.exe=/opt/compiler-explorer/c3-0.7.4/c3c diff --git a/etc/config/cobol.amazon.properties b/etc/config/cobol.amazon.properties index 6935bee2c..59a350f9b 100644 --- a/etc/config/cobol.amazon.properties +++ b/etc/config/cobol.amazon.properties @@ -1,6 +1,6 @@ compilers=&gnucobol:&gcccobol defaultCompiler=gnucobol32 -objdumper=/opt/compiler-explorer/gcc-13.1.0/bin/objdump +objdumper=/opt/compiler-explorer/gcc-15.2.0/bin/objdump group.gnucobol.groupName=GnuCOBOL group.gnucobol.compilers=gnucobol32:gnucobol32rc2:gnucobol31:gnucobol22:gnucobol11 @@ -26,7 +26,7 @@ compiler.gnucobol11.version=1.1 group.gcccobol.compilerType=gcccobol group.gcccobol.groupName=GCC -group.gcccobol.compilers=&gcccobolassert:gcccobolsnapshot:gcccobol151:gcccoboltrunk +group.gcccobol.compilers=&gcccobolassert:gcccobolsnapshot:gcccobol151:gcccobol152:gcccoboltrunk group.gcccobol.unwiseOptions=-march=native group.gcccobol.isSemVer=true group.gcccobol.baseName=GCC @@ -41,12 +41,18 @@ compiler.gcccobolsnapshot.semver=(cobol+master) compiler.gcccobol151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gcobol compiler.gcccobol151.semver=15.1.0 +compiler.gcccobol152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gcobol +compiler.gcccobol152.semver=15.2.0 + compiler.gcccoboltrunk.exe=/opt/compiler-explorer/gcc-snapshot/bin/gcobol compiler.gcccoboltrunk.semver=(GCC master) ## GCC (from upstream GCC, not GCCRS github) x86 build with "assertions" (--enable-checking=XXX) -group.gcccobolassert.compilers=gcccobol151assert +group.gcccobolassert.compilers=gcccobol151assert:gcccobol152assert group.gcccobolassert.groupName=x86-64 GCC (assertions) compiler.gcccobol151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gcobol compiler.gcccobol151assert.semver=15.1.0 (GCC assertions) + +compiler.gcccobol152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gcobol +compiler.gcccobol152assert.semver=15.2.0 (GCC assertions) diff --git a/etc/config/compiler-explorer.beta.properties b/etc/config/compiler-explorer.beta.properties index e5e4d552e..9270ba4e2 100644 --- a/etc/config/compiler-explorer.beta.properties +++ b/etc/config/compiler-explorer.beta.properties @@ -3,3 +3,6 @@ httpRoot=/beta storageSolution=s3 motdUrl=/motd/motd-beta.json sentryEnvironment=beta + +# Claude Explain API endpoint, for beta +explainApiEndpoint=https://api.compiler-explorer.com/explain diff --git a/etc/config/d.amazon.properties b/etc/config/d.amazon.properties index 2c733dfcd..e5baa7f77 100644 --- a/etc/config/d.amazon.properties +++ b/etc/config/d.amazon.properties @@ -1,7 +1,7 @@ compilers=&gdc:&ldc:&dmd:&gdccross defaultCompiler=ldc1_40 -group.gdc.compilers=&gdcassert:gdc48:gdc49:gdc52:gdc92:gdc93:gdc95:gdc101:gdc102:gdc105:gdc111:gdc113:gdc114:gdc121:gdc122:gdc123:gdc124:gdc125:gdc131:gdc132:gdc133:gdc134:gdc141:gdc142:gdc143:gdc151:gdctrunk +group.gdc.compilers=&gdcassert:gdc48:gdc49:gdc52:gdc92:gdc93:gdc95:gdc101:gdc102:gdc105:gdc111:gdc113:gdc114:gdc121:gdc122:gdc123:gdc124:gdc125:gdc131:gdc132:gdc133:gdc134:gdc141:gdc142:gdc143:gdc151:gdc152:gdctrunk group.gdc.groupName=GDC x86-64 group.gdc.includeFlag=-isystem group.gdc.isSemVer=true @@ -64,6 +64,8 @@ compiler.gdc143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/gdc compiler.gdc143.semver=14.3 compiler.gdc151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gdc compiler.gdc151.semver=15.1 +compiler.gdc152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gdc +compiler.gdc152.semver=15.2 compiler.gdctrunk.exe=/opt/compiler-explorer/gcc-snapshot/bin/gdc compiler.gdctrunk.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump @@ -71,7 +73,7 @@ compiler.gdctrunk.semver=(trunk) compiler.gdctrunk.isNightly=true ## GDC x86 build with "assertions" (--enable-checking=XXX) -group.gdcassert.compilers=gdc105assert:gdc111assert:gdc113assert:gdc114assert:gdc121assert:gdc122assert:gdc123assert:gdc124assert:gdc125assert:gdc131assert:gdc132assert:gdc133assert:gdc134assert:gdc141assert:gdc142assert:gdc143assert:gdc151assert +group.gdcassert.compilers=gdc105assert:gdc111assert:gdc113assert:gdc114assert:gdc121assert:gdc122assert:gdc123assert:gdc124assert:gdc125assert:gdc131assert:gdc132assert:gdc133assert:gdc134assert:gdc141assert:gdc142assert:gdc143assert:gdc151assert:gdc152assert group.gdcassert.groupName=GDC x86-64 (assertions) compiler.gdc105assert.exe=/opt/compiler-explorer/gcc-assertions-10.5.0/bin/gdc @@ -108,6 +110,8 @@ compiler.gdc143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/gdc compiler.gdc143assert.semver=14.3 (assertions) compiler.gdc151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gdc compiler.gdc151assert.semver=15.1 (assertions) +compiler.gdc152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gdc +compiler.gdc152assert.semver=15.2 (assertions) ## CROSS GDC group.gdccross.compilers=&gdcloongarch64:&gdcs390x:&gdcppc:&gdcppc64:&gdcppc64le:&gdcmips64:&gdcmips:&gdcmipsel:&gdcarm:&gdcarm64:&gdcriscv:&gdcriscv64:&gdchppa @@ -116,7 +120,7 @@ group.gdccross.supportsBinary=true group.gdccross.supportsBinaryObject=true ### GDC for Loongarch64 -group.gdcloongarch64.compilers=gdcloongarch641410:gdcloongarch641420:gdcloongarch641430:gdcloongarch641510 +group.gdcloongarch64.compilers=gdcloongarch641410:gdcloongarch641420:gdcloongarch641430:gdcloongarch641510:gdcloongarch641520 group.gdcloongarch64.groupName=GDC loongarch64 group.gdcloongarch64.includeFlag=-isystem group.gdcloongarch64.isSemVer=true @@ -142,8 +146,13 @@ compiler.gdcloongarch641510.semver=15.1.0 compiler.gdcloongarch641510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.gdcloongarch641510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.gdcloongarch641520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-gdc +compiler.gdcloongarch641520.semver=15.2.0 +compiler.gdcloongarch641520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.gdcloongarch641520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ### GDC for RISCV32 -group.gdcriscv.compilers=gdcriscv32trunk:gdcriscv1220:gdcriscv1230:gdcriscv1240:gdcriscv1250:gdcriscv1310:gdcriscv1320:gdcriscv1330:gdcriscv1340:gdcriscv1410:gdcriscv1420:gdcriscv1430:gdcriscv1510 +group.gdcriscv.compilers=gdcriscv32trunk:gdcriscv1220:gdcriscv1230:gdcriscv1240:gdcriscv1250:gdcriscv1310:gdcriscv1320:gdcriscv1330:gdcriscv1340:gdcriscv1410:gdcriscv1420:gdcriscv1430:gdcriscv1510:gdcriscv1520 group.gdcriscv.groupName=GDC riscv group.gdcriscv.includeFlag=-isystem group.gdcriscv.isSemVer=true @@ -209,13 +218,18 @@ compiler.gdcriscv1510.semver=15.1.0 compiler.gdcriscv1510.objdumper=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.gdcriscv1510.demangler=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt +compiler.gdcriscv1520.exe=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gdc +compiler.gdcriscv1520.semver=15.2.0 +compiler.gdcriscv1520.objdumper=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump +compiler.gdcriscv1520.demangler=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt + compiler.gdcriscv32trunk.exe=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gdc compiler.gdcriscv32trunk.semver=trunk compiler.gdcriscv32trunk.objdumper=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.gdcriscv32trunk.demangler=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt ### GDC for RISCV64 -group.gdcriscv64.compilers=gdcriscv64trunk:gdcriscv641220:gdcriscv641230:gdcriscv641240:gdcriscv641250:gdcriscv641310:gdcriscv641320:gdcriscv641330:gdcriscv641340:gdcriscv641410:gdcriscv641420:gdcriscv641430:gdcriscv641510 +group.gdcriscv64.compilers=gdcriscv64trunk:gdcriscv641220:gdcriscv641230:gdcriscv641240:gdcriscv641250:gdcriscv641310:gdcriscv641320:gdcriscv641330:gdcriscv641340:gdcriscv641410:gdcriscv641420:gdcriscv641430:gdcriscv641510:gdcriscv641520 group.gdcriscv64.groupName=GDC riscv64 group.gdcriscv64.includeFlag=-isystem group.gdcriscv64.isSemVer=true @@ -281,6 +295,11 @@ compiler.gdcriscv641510.semver=15.1.0 compiler.gdcriscv641510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.gdcriscv641510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.gdcriscv641520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gdc +compiler.gdcriscv641520.semver=15.2.0 +compiler.gdcriscv641520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.gdcriscv641520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + compiler.gdcriscv64trunk.exe=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gdc compiler.gdcriscv64trunk.semver=trunk compiler.gdcriscv64trunk.objdumper=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump @@ -288,7 +307,7 @@ compiler.gdcriscv64trunk.demangler=/opt/compiler-explorer/riscv64/gcc-trunk/risc compiler.gdcriscv64trunk.isNightly=true ### GDC for ARM64 -group.gdcarm64.compilers=gdcarm641220:gdcarm641230:gdcarm641240:gdcarm641250:gdcarm641310:gdcarm641320:gdcarm641330:gdcarm641340:gdcarm641410:gdcarm641420:gdcarm641430:gdcarm641510 +group.gdcarm64.compilers=gdcarm641220:gdcarm641230:gdcarm641240:gdcarm641250:gdcarm641310:gdcarm641320:gdcarm641330:gdcarm641340:gdcarm641410:gdcarm641420:gdcarm641430:gdcarm641510:gdcarm641520 group.gdcarm64.groupName=GDC arm64 group.gdcarm64.includeFlag=-isystem group.gdcarm64.isSemVer=true @@ -354,8 +373,13 @@ compiler.gdcarm641510.semver=15.1.0 compiler.gdcarm641510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.gdcarm641510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.gdcarm641520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gdc +compiler.gdcarm641520.semver=15.2.0 +compiler.gdcarm641520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.gdcarm641520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + ### GDC for ARM 32-bits -group.gdcarm.compilers=gdcarm1220:gdcarm1230:gdcarm1240:gdcarm1250:gdcarm1310:gdcarm1320:gdcarm1330:gdcarm1340:gdcarm1410:gdcarm1420:gdcarm1430:gdcarm1510 +group.gdcarm.compilers=gdcarm1220:gdcarm1230:gdcarm1240:gdcarm1250:gdcarm1310:gdcarm1320:gdcarm1330:gdcarm1340:gdcarm1410:gdcarm1420:gdcarm1430:gdcarm1510:gdcarm1520 group.gdcarm.groupName=GDC arm group.gdcarm.includeFlag=-isystem group.gdcarm.isSemVer=true @@ -421,8 +445,13 @@ compiler.gdcarm1510.semver=15.1.0 compiler.gdcarm1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.gdcarm1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.gdcarm1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gdc +compiler.gdcarm1520.semver=15.2.0 +compiler.gdcarm1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.gdcarm1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + ### GDC for s390x -group.gdcs390x.compilers=gdcs390x1210:gdcs390x1220:gdcs390x1230:gdcs390x1310:gdcs390x1320:gdcs390x1410:gdcs390x1330:gdcs390x1240:gdcs390x1420:gdcs390x1510:gdcs390x1430:gdcs390x1340:gdcs390x1250 +group.gdcs390x.compilers=gdcs390x1210:gdcs390x1220:gdcs390x1230:gdcs390x1310:gdcs390x1320:gdcs390x1410:gdcs390x1330:gdcs390x1240:gdcs390x1420:gdcs390x1510:gdcs390x1430:gdcs390x1340:gdcs390x1250:gdcs390x1520 group.gdcs390x.groupName=GDC s390x group.gdcs390x.includeFlag=-isystem group.gdcs390x.isSemVer=true @@ -492,8 +521,13 @@ compiler.gdcs390x1510.semver=15.1.0 compiler.gdcs390x1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.gdcs390x1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.gdcs390x1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-gdc +compiler.gdcs390x1520.semver=15.2.0 +compiler.gdcs390x1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.gdcs390x1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ### GDC for powerpc -group.gdcppc.compilers=gdcppc1210:gdcppc1220:gdcppc1230:gdcppc1240:gdcppc1250:gdcppc1310:gdcppc1320:gdcppc1330:gdcppc1340:gdcppc1410:gdcppc1420:gdcppc1430:gdcppc1510 +group.gdcppc.compilers=gdcppc1210:gdcppc1220:gdcppc1230:gdcppc1240:gdcppc1250:gdcppc1310:gdcppc1320:gdcppc1330:gdcppc1340:gdcppc1410:gdcppc1420:gdcppc1430:gdcppc1510:gdcppc1520 group.gdcppc.groupName=GDC powerpc group.gdcppc.includeFlag=-isystem group.gdcppc.isSemVer=true @@ -564,8 +598,13 @@ compiler.gdcppc1510.semver=15.1.0 compiler.gdcppc1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.gdcppc1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt +compiler.gdcppc1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gdc +compiler.gdcppc1520.semver=15.2.0 +compiler.gdcppc1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.gdcppc1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + ### GDC for powerpc64 -group.gdcppc64.compilers=gdcppc64trunk:gdcppc641210:gdcppc641220:gdcppc641230:gdcppc641240:gdcppc641250:gdcppc641310:gdcppc641320:gdcppc641330:gdcppc641340:gdcppc641410:gdcppc641420:gdcppc641430:gdcppc641510 +group.gdcppc64.compilers=gdcppc64trunk:gdcppc641210:gdcppc641220:gdcppc641230:gdcppc641240:gdcppc641250:gdcppc641310:gdcppc641320:gdcppc641330:gdcppc641340:gdcppc641410:gdcppc641420:gdcppc641430:gdcppc641510:gdcppc641520 group.gdcppc64.groupName=GDC powerpc64 group.gdcppc64.includeFlag=-isystem group.gdcppc64.isSemVer=true @@ -635,13 +674,18 @@ compiler.gdcppc641510.semver=15.1.0 compiler.gdcppc641510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.gdcppc641510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.gdcppc641520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gdc +compiler.gdcppc641520.semver=15.2.0 +compiler.gdcppc641520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.gdcppc641520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.gdcppc64trunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gdc compiler.gdcppc64trunk.semver=trunk compiler.gdcppc64trunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.gdcppc64trunk.demangler=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt ### GDC for powerpc64le -group.gdcppc64le.compilers=gdcppc64le1210:gdcppc64le1220:gdcppc64le1230:gdcppc64le1310:gdcppc64le1320:gdcppc64letrunk:gdcppc64le1410:gdcppc64le1330:gdcppc64le1240:gdcppc64le1420:gdcppc64le1510:gdcppc64le1430:gdcppc64le1340:gdcppc64le1250 +group.gdcppc64le.compilers=gdcppc64le1210:gdcppc64le1220:gdcppc64le1230:gdcppc64le1310:gdcppc64le1320:gdcppc64letrunk:gdcppc64le1410:gdcppc64le1330:gdcppc64le1240:gdcppc64le1420:gdcppc64le1510:gdcppc64le1430:gdcppc64le1340:gdcppc64le1250:gdcppc64le1520 group.gdcppc64le.groupName=GDC powerpc64le group.gdcppc64le.includeFlag=-isystem group.gdcppc64le.isSemVer=true @@ -711,13 +755,18 @@ compiler.gdcppc64le1510.semver=15.1.0 compiler.gdcppc64le1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.gdcppc64le1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.gdcppc64le1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gdc +compiler.gdcppc64le1520.semver=15.2.0 +compiler.gdcppc64le1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.gdcppc64le1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.gdcppc64letrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gdc compiler.gdcppc64letrunk.semver=trunk compiler.gdcppc64letrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.gdcppc64letrunk.demangler=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt ### GDC for mips64 -group.gdcmips64.compilers=gdcmips641210:gdcmips641220:gdcmips641230:gdcmips641240:gdcmips641250:gdcmips641310:gdcmips641320:gdcmips641330:gdcmips641340:gdcmips641410:gdcmips641420:gdcmips641430:gdcmips641510 +group.gdcmips64.compilers=gdcmips641210:gdcmips641220:gdcmips641230:gdcmips641240:gdcmips641250:gdcmips641310:gdcmips641320:gdcmips641330:gdcmips641340:gdcmips641410:gdcmips641420:gdcmips641430:gdcmips641510:gdcmips641520 group.gdcmips64.groupName=GDC mips64 group.gdcmips64.includeFlag=-isystem group.gdcmips64.isSemVer=true @@ -787,8 +836,13 @@ compiler.gdcmips641510.semver=15.1.0 compiler.gdcmips641510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.gdcmips641510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.gdcmips641520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gdc +compiler.gdcmips641520.semver=15.2.0 +compiler.gdcmips641520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.gdcmips641520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ### GDC for mips -group.gdcmips.compilers=gdcmips1210:gdcmips1220:gdcmips1230:gdcmips1240:gdcmips1250:gdcmips1310:gdcmips1320:gdcmips1330:gdcmips1340:gdcmips1410:gdcmips1420:gdcmips1430:gdcmips1510 +group.gdcmips.compilers=gdcmips1210:gdcmips1220:gdcmips1230:gdcmips1240:gdcmips1250:gdcmips1310:gdcmips1320:gdcmips1330:gdcmips1340:gdcmips1410:gdcmips1420:gdcmips1430:gdcmips1510:gdcmips1520 group.gdcmips.groupName=GDC mips group.gdcmips.includeFlag=-isystem group.gdcmips.isSemVer=true @@ -858,8 +912,13 @@ compiler.gdcmips1510.semver=15.1.0 compiler.gdcmips1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.gdcmips1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.gdcmips1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gdc +compiler.gdcmips1520.semver=15.2.0 +compiler.gdcmips1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.gdcmips1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ### GDC for mipsel -group.gdcmipsel.compilers=gdcmipsel1210:gdcmipsel1220:gdcmipsel1230:gdcmipsel1240:gdcmipsel1250:gdcmipsel1310:gdcmipsel1320:gdcmipsel1330:gdcmipsel1340:gdcmipsel1410:gdcmipsel1420:gdcmipsel1430:gdcmipsel1510 +group.gdcmipsel.compilers=gdcmipsel1210:gdcmipsel1220:gdcmipsel1230:gdcmipsel1240:gdcmipsel1250:gdcmipsel1310:gdcmipsel1320:gdcmipsel1330:gdcmipsel1340:gdcmipsel1410:gdcmipsel1420:gdcmipsel1430:gdcmipsel1510:gdcmipsel1520 group.gdcmipsel.groupName=GDC mipsel group.gdcmipsel.includeFlag=-isystem group.gdcmipsel.isSemVer=true @@ -929,8 +988,13 @@ compiler.gdcmipsel1510.semver=15.1.0 compiler.gdcmipsel1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.gdcmipsel1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.gdcmipsel1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gdc +compiler.gdcmipsel1520.semver=15.2.0 +compiler.gdcmipsel1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.gdcmipsel1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ### GDC for HPPA -group.gdchppa.compilers=gdchppa1420:gdchppa1430:gdchppa1510 +group.gdchppa.compilers=gdchppa1420:gdchppa1430:gdchppa1510:gdchppa1520 group.gdchppa.groupName=GDC hppa group.gdchppa.includeFlag=-isystem group.gdchppa.isSemVer=true @@ -951,6 +1015,11 @@ compiler.gdchppa1510.semver=15.1.0 compiler.gdchppa1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.gdchppa1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.gdchppa1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-gdc +compiler.gdchppa1520.semver=15.2.0 +compiler.gdchppa1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.gdchppa1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + group.ldc.compilers=ldc017:ldc100:ldc110:ldc120:ldc130:ldc140:ldc150:ldc160:ldc170:ldc180:ldc190:ldc1_10:ldc1_11:ldc1_12:ldc1_13:ldc1_14:ldc1_15:ldc1_16:ldc1_17:ldc1_18:ldc1_19:ldc1_20:ldc1_21:ldc1_22:ldc1_23:ldc1_24:ldc1_25:ldc1_26:ldc1_27:ldc1_28:ldc1_29:ldc1_30:ldc1_31:ldc1_32:ldc1_33:ldc1_34:ldc1_35:ldc1_36:ldc1_37:ldc1_38:ldc1_39:ldc1_40:ldcbeta:ldclatestci group.ldc.compilerType=ldc group.ldc.isSemVer=true diff --git a/etc/config/execution.amazon.properties b/etc/config/execution.amazon.properties index 39bf8385a..ebda7b59b 100644 --- a/etc/config/execution.amazon.properties +++ b/etc/config/execution.amazon.properties @@ -1,5 +1,5 @@ sandboxType=nsjail executionType=nsjail -wine=/opt/wine-stable/bin/wine64 -wineServer=/opt/wine-stable/bin/wineserver -firejail=/usr/local/firejail-0.9.70/bin/firejail +wine= +wineServer= +firejail= diff --git a/etc/config/execution.gpu.properties b/etc/config/execution.gpu.properties index d0ce6bf04..ebda7b59b 100644 --- a/etc/config/execution.gpu.properties +++ b/etc/config/execution.gpu.properties @@ -2,4 +2,4 @@ sandboxType=nsjail executionType=nsjail wine= wineServer= -firejail=/usr/local/firejail-0.9.70/bin/firejail +firejail= diff --git a/etc/config/fortran.amazon.properties b/etc/config/fortran.amazon.properties index 815abc9de..cabaf6852 100644 --- a/etc/config/fortran.amazon.properties +++ b/etc/config/fortran.amazon.properties @@ -1,7 +1,7 @@ compilers=&gfortran_86:&ifort:&ifx:&nvfortran_x86:&cross:&clang_llvmflang:&lfortran -defaultCompiler=gfortran151 -demangler=/opt/compiler-explorer/gcc-15.1.0/bin/c++filt -objdumper=/opt/compiler-explorer/gcc-15.1.0/bin/objdump +defaultCompiler=gfortran152 +demangler=/opt/compiler-explorer/gcc-15.2.0/bin/c++filt +objdumper=/opt/compiler-explorer/gcc-15.2.0/bin/objdump compilerType=fortran buildenvsetup=ceconan-fortran @@ -9,7 +9,7 @@ buildenvsetup.host=https://conan.compiler-explorer.com ############################### # GCC (as in GNU Compiler Collection) for x86 -group.gfortran_86.compilers=&gfortranassert:gfortran494:gfortran550:gfortran63:gfortran71:gfortran72:gfortran73:gfortran81:gfortran82:gfortran83:gfortran84:gfortran85:gfortran91:gfortran92:gfortran93:gfortran94:gfortran101:gfortran102:gfortran103:gfortran104:gfortran105:gfortran111:gfortran112:gfortran113:gfortran114:gfortran121:gfortran122:gfortran123:gfortran124:gfortran125:gfortran131:gfortran132:gfortran133:gfortran134:gfortran141:gfortran142:gfortran143:gfortran151:gfortransnapshot +group.gfortran_86.compilers=&gfortranassert:gfortran494:gfortran550:gfortran63:gfortran71:gfortran72:gfortran73:gfortran81:gfortran82:gfortran83:gfortran84:gfortran85:gfortran91:gfortran92:gfortran93:gfortran94:gfortran101:gfortran102:gfortran103:gfortran104:gfortran105:gfortran111:gfortran112:gfortran113:gfortran114:gfortran121:gfortran122:gfortran123:gfortran124:gfortran125:gfortran131:gfortran132:gfortran133:gfortran134:gfortran141:gfortran142:gfortran143:gfortran151:gfortran152:gfortransnapshot group.gfortran_86.groupName=GFORTRAN x86-64 group.gfortran_86.isSemVer=true group.gfortran_86.baseName=x86-64 gfortran @@ -88,6 +88,8 @@ compiler.gfortran143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/gfortran compiler.gfortran143.semver=14.3 compiler.gfortran151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gfortran compiler.gfortran151.semver=15.1 +compiler.gfortran152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gfortran +compiler.gfortran152.semver=15.2 compiler.gfortransnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/gfortran compiler.gfortransnapshot.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt @@ -96,7 +98,7 @@ compiler.gfortransnapshot.semver=(trunk) compiler.gfortransnapshot.isNightly=true ## GFORTRAN x86 build with "assertions" (--enable-checking=XXX) -group.gfortranassert.compilers=gfortran103assert:gfortran104assert:gfortran105assert:gfortran111assert:gfortran112assert:gfortran113assert:gfortran114assert:gfortran121assert:gfortran122assert:gfortran123assert:gfortran124assert:gfortran125assert:gfortran131assert:gfortran132assert:gfortran133assert:gfortran134assert:gfortran141assert:gfortran142assert:gfortran143assert:gfortran151assert +group.gfortranassert.compilers=gfortran103assert:gfortran104assert:gfortran105assert:gfortran111assert:gfortran112assert:gfortran113assert:gfortran114assert:gfortran121assert:gfortran122assert:gfortran123assert:gfortran124assert:gfortran125assert:gfortran131assert:gfortran132assert:gfortran133assert:gfortran134assert:gfortran141assert:gfortran142assert:gfortran143assert:gfortran151assert:gfortran152assert group.gfortranassert.groupName=GFORTRAN x86-64 (assertions) group.gfortranassert.compilerCategories=gfortran @@ -140,6 +142,8 @@ compiler.gfortran143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/ compiler.gfortran143assert.semver=14.3 (assertions) compiler.gfortran151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gfortran compiler.gfortran151assert.semver=15.1 (assertions) +compiler.gfortran152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gfortran +compiler.gfortran152assert.semver=15.2 (assertions) ############################### # Intel Parallel Studio XE for x86 @@ -388,7 +392,7 @@ compiler.ftricoreg1130.demangler=/opt/compiler-explorer/tricore/gcc-11.3.0/trico ############################### # GCC for HPPA -group.gcchppa.compilers=fhppag1420:fhppag1430:fhppag1510 +group.gcchppa.compilers=fhppag1420:fhppag1430:fhppag1510:fhppag1520 group.gcchppa.groupName=HPPA gfortran group.gcchppa.baseName=HPPA gfortran group.gcchppa.supportsBinary=true @@ -409,9 +413,14 @@ compiler.fhppag1510.semver=15.1.0 compiler.fhppag1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.fhppag1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.fhppag1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-gfortran +compiler.fhppag1520.semver=15.2.0 +compiler.fhppag1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.fhppag1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + ############################### # GCC for SPARC -group.gccsparc.compilers=fsparcg1220:fsparcg1230:fsparcg1240:fsparcg1250:fsparcg1310:fsparcg1320:fsparcg1330:fsparcg1340:fsparcg1410:fsparcg1420:fsparcg1430:fsparcg1510 +group.gccsparc.compilers=fsparcg1220:fsparcg1230:fsparcg1240:fsparcg1250:fsparcg1310:fsparcg1320:fsparcg1330:fsparcg1340:fsparcg1410:fsparcg1420:fsparcg1430:fsparcg1510:fsparcg1520 group.gccsparc.groupName=SPARC gfortran group.gccsparc.baseName=SPARC gfortran group.gccsparc.compilerCategories=gfortran @@ -476,9 +485,14 @@ compiler.fsparcg1510.semver=15.1.0 compiler.fsparcg1510.objdumper=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump compiler.fsparcg1510.demangler=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt +compiler.fsparcg1520.exe=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-gfortran +compiler.fsparcg1520.semver=15.2.0 +compiler.fsparcg1520.objdumper=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump +compiler.fsparcg1520.demangler=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt + ############################### # GCC for SPARC64 -group.gccsparc64.compilers=fsparc64g1220:fsparc64g1230:fsparc64g1310:fsparc64g1320:fsparc64g1410:fsparc64g1330:fsparc64g1240:fsparc64g1420:fsparc64g1510:fsparc64g1430:fsparc64g1340:fsparc64g1250 +group.gccsparc64.compilers=fsparc64g1220:fsparc64g1230:fsparc64g1310:fsparc64g1320:fsparc64g1410:fsparc64g1330:fsparc64g1240:fsparc64g1420:fsparc64g1510:fsparc64g1430:fsparc64g1340:fsparc64g1250:fsparc64g1520 group.gccsparc64.groupName=SPARC64 gfortran group.gccsparc64.baseName=SPARC64 gfortran group.gccsparc64.compilerCategories=gfortran @@ -543,9 +557,14 @@ compiler.fsparc64g1510.semver=15.1.0 compiler.fsparc64g1510.objdumper=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump compiler.fsparc64g1510.demangler=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt +compiler.fsparc64g1520.exe=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-gfortran +compiler.fsparc64g1520.semver=15.2.0 +compiler.fsparc64g1520.objdumper=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump +compiler.fsparc64g1520.demangler=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt + ############################### # GCC for SPARC LEON -group.gccsparcleon.compilers=fsparcleong1220:fsparcleong1220-1:fsparcleong1230:fsparcleong1240:fsparcleong1250:fsparcleong1310:fsparcleong1320:fsparcleong1330:fsparcleong1340:fsparcleong1410:fsparcleong1420:fsparcleong1430:fsparcleong1510 +group.gccsparcleon.compilers=fsparcleong1220:fsparcleong1220-1:fsparcleong1230:fsparcleong1240:fsparcleong1250:fsparcleong1310:fsparcleong1320:fsparcleong1330:fsparcleong1340:fsparcleong1410:fsparcleong1420:fsparcleong1430:fsparcleong1510:fsparcleong1520 group.gccsparcleon.groupName=SPARC LEON gfortran group.gccsparcleon.baseName=SPARC LEON gfortran group.gccsparcleon.compilerCategories=gfortran @@ -617,9 +636,14 @@ compiler.fsparcleong1510.semver=15.1.0 compiler.fsparcleong1510.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump compiler.fsparcleong1510.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt +compiler.fsparcleong1520.exe=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-gfortran +compiler.fsparcleong1520.semver=15.2.0 +compiler.fsparcleong1520.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump +compiler.fsparcleong1520.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt + ############################### # GCC for LOONGARCH64 -group.gccloongarch64.compilers=floongarch64g1220:floongarch64g1230:floongarch64g1310:floongarch64g1320:floongarch64g1410:floongarch64g1330:floongarch64g1240:floongarch64g1420:floongarch64g1510:floongarch64g1430:floongarch64g1340:floongarch64g1250 +group.gccloongarch64.compilers=floongarch64g1220:floongarch64g1230:floongarch64g1310:floongarch64g1320:floongarch64g1410:floongarch64g1330:floongarch64g1240:floongarch64g1420:floongarch64g1510:floongarch64g1430:floongarch64g1340:floongarch64g1250:floongarch64g1520 group.gccloongarch64.groupName=LOONGARCH64 gfortran group.gccloongarch64.baseName=LOONGARCH64 gfortran group.gccloongarch64.compilerCategories=gfortran @@ -684,9 +708,14 @@ compiler.floongarch64g1510.semver=15.1.0 compiler.floongarch64g1510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.floongarch64g1510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.floongarch64g1520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-gfortran +compiler.floongarch64g1520.semver=15.2.0 +compiler.floongarch64g1520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.floongarch64g1520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ############################### # GCC for RISCV64 -group.gccriscv64.compilers=friscv64g1140:friscv64g1220:friscv64g1230:friscv64g1310:friscv64g1320:friscv64g1410:friscv64g1330:friscv64g1240:friscv64g1420:friscv64g1510:friscv64g1430:friscv64g1340:friscv64g1250 +group.gccriscv64.compilers=friscv64g1140:friscv64g1220:friscv64g1230:friscv64g1310:friscv64g1320:friscv64g1410:friscv64g1330:friscv64g1240:friscv64g1420:friscv64g1510:friscv64g1430:friscv64g1340:friscv64g1250:friscv64g1520 group.gccriscv64.groupName=RISCV64 gfortran group.gccriscv64.baseName=RISCV64 gfortran group.gccriscv64.compilerCategories=gfortran @@ -756,9 +785,14 @@ compiler.friscv64g1510.semver=15.1.0 compiler.friscv64g1510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.friscv64g1510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.friscv64g1520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gfortran +compiler.friscv64g1520.semver=15.2.0 +compiler.friscv64g1520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.friscv64g1520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + ############################### # GCC for RISCV -group.gccriscv.compilers=friscvg1140:friscvg1220:friscvg1230:friscvg1240:friscvg1250:friscvg1310:friscvg1320:friscvg1330:friscvg1340:friscvg1410:friscvg1420:friscvg1430:friscvg1510 +group.gccriscv.compilers=friscvg1140:friscvg1220:friscvg1230:friscvg1240:friscvg1250:friscvg1310:friscvg1320:friscvg1330:friscvg1340:friscvg1410:friscvg1420:friscvg1430:friscvg1510:friscvg1520 group.gccriscv.groupName=RISCV (32bit) gfortran group.gccriscv.baseName=RISCV (32bit) gfortran group.gccriscv.compilerCategories=gfortran @@ -828,9 +862,14 @@ compiler.friscvg1510.semver=15.1.0 compiler.friscvg1510.objdumper=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.friscvg1510.demangler=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt +compiler.friscvg1520.exe=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gfortran +compiler.friscvg1520.semver=15.2.0 +compiler.friscvg1520.objdumper=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump +compiler.friscvg1520.demangler=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt + ############################### # GCC for ARM -group.gccarm.compilers=farmg640:farmg730:farmg820:farmg1050:farmg1140:farmg1210:farmg1220:farmg1230:farmg1240:farmg1250:farmg1310:farmg1320:farmg1330:farmg1340:farmg1410:farmg1420:farmg1430:farmg1510 +group.gccarm.compilers=farmg640:farmg730:farmg820:farmg1050:farmg1140:farmg1210:farmg1220:farmg1230:farmg1240:farmg1250:farmg1310:farmg1320:farmg1330:farmg1340:farmg1410:farmg1420:farmg1430:farmg1510:farmg1520 group.gccarm.groupName=ARM (32bit) gfortran group.gccarm.baseName=ARM (32bit) gfortran group.gccarm.compilerCategories=gfortran @@ -917,9 +956,14 @@ compiler.farmg1510.semver=15.1.0 compiler.farmg1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.farmg1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.farmg1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gfortran +compiler.farmg1520.semver=15.2.0 +compiler.farmg1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.farmg1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + ############################### ## GCC for s390x -group.gccs390x.compilers=fs390xg1210:fs390xg1220:fs390xg1230:fs390xg1310:fs390xg1320:fs390xg1410:fs390xg1330:fs390xg1240:fs390xg1420:fs390xg1510:fs390xg1430:fs390xg1340:fs390xg1250 +group.gccs390x.compilers=fs390xg1210:fs390xg1220:fs390xg1230:fs390xg1310:fs390xg1320:fs390xg1410:fs390xg1330:fs390xg1240:fs390xg1420:fs390xg1510:fs390xg1430:fs390xg1340:fs390xg1250:fs390xg1520 group.gccs390x.groupName=s390x gfortran group.gccs390x.baseName=s390x gfortran group.gccs390x.compilerCategories=gfortran @@ -988,6 +1032,11 @@ compiler.fs390xg1510.semver=15.1.0 compiler.fs390xg1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.fs390xg1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.fs390xg1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-gfortran +compiler.fs390xg1520.semver=15.2.0 +compiler.fs390xg1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.fs390xg1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ############################### # LLVM Flang for X86 group.clang_llvmflang.compilers=flangtrunk:flangtrunk-fc @@ -1057,7 +1106,7 @@ compiler.lfortran0520.clang=/opt/compiler-explorer/clang-19.1.0/bin/clang ############################### # GCC for ARM 64bit -group.gccaarch64.compilers=farm64g494:farm64g550:farm64g640:farm64g730:farm64g820:farm64g1050:farm64g1210:farm64g1220:farm64g1230:farm64g1310:farm64g1140:farm64g1320:farm64g1410:farm64g1330:farm64g1240:farm64g1420:farm64g1510:farm64g1430:farm64g1340:farm64g1250 +group.gccaarch64.compilers=farm64g494:farm64g550:farm64g640:farm64g730:farm64g820:farm64g1050:farm64g1210:farm64g1220:farm64g1230:farm64g1310:farm64g1140:farm64g1320:farm64g1410:farm64g1330:farm64g1240:farm64g1420:farm64g1510:farm64g1430:farm64g1340:farm64g1250:farm64g1520 group.gccaarch64.groupName=ARM (AARCH64) GCC group.gccaarch64.baseName=AARCH64 gfortran group.gccaarch64.compilerCategories=gfortran @@ -1154,6 +1203,11 @@ compiler.farm64g1510.semver=15.1.0 compiler.farm64g1510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.farm64g1510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.farm64g1520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gfortran +compiler.farm64g1520.semver=15.2.0 +compiler.farm64g1520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.farm64g1520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + ############################### # GCC for PPCs group.ppcs.compilers=&ppc64:&ppc64le:&ppc @@ -1163,7 +1217,7 @@ group.ppcs.compilerCategories=gfortran ############################### # GCC for PPC -group.ppc.compilers=fppcg1210:fppcg1220:fppcg1230:fppcg1240:fppcg1250:fppcg1310:fppcg1320:fppcg1330:fppcg1340:fppcg1410:fppcg1420:fppcg1430:fppcg1510 +group.ppc.compilers=fppcg1210:fppcg1220:fppcg1230:fppcg1240:fppcg1250:fppcg1310:fppcg1320:fppcg1330:fppcg1340:fppcg1410:fppcg1420:fppcg1430:fppcg1510:fppcg1520 group.ppc.groupName=POWER gfortran group.ppc.baseName=POWER gfortran group.ppc.compilerCategories=gfortran @@ -1232,9 +1286,14 @@ compiler.fppcg1510.semver=15.1.0 compiler.fppcg1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.fppcg1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt +compiler.fppcg1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gfortran +compiler.fppcg1520.semver=15.2.0 +compiler.fppcg1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.fppcg1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + ############################### # GCC for PPC64 -group.ppc64.compilers=fppc64g8:fppc64g9:fppc64g1210:fppc64g1220:fppc64g1230:fppc64g1310:fppc64g1320:fppc64gtrunk:fppc64g1410:fppc64g1330:fppc64g1240:fppc64g1420:fppc64g1510:fppc64g1430:fppc64g1340:fppc64g1250 +group.ppc64.compilers=fppc64g8:fppc64g9:fppc64g1210:fppc64g1220:fppc64g1230:fppc64g1310:fppc64g1320:fppc64gtrunk:fppc64g1410:fppc64g1330:fppc64g1240:fppc64g1420:fppc64g1510:fppc64g1430:fppc64g1340:fppc64g1250:fppc64g1520 group.ppc64.groupName=POWER64 gfortran group.ppc64.baseName=POWER64 gfortran group.ppc64.compilerCategories=gfortran @@ -1311,6 +1370,11 @@ compiler.fppc64g1510.semver=15.1.0 compiler.fppc64g1510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.fppc64g1510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.fppc64g1520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gfortran +compiler.fppc64g1520.semver=15.2.0 +compiler.fppc64g1520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.fppc64g1520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.fppc64gtrunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gfortran compiler.fppc64gtrunk.semver=trunk compiler.fppc64gtrunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump @@ -1318,7 +1382,7 @@ compiler.fppc64gtrunk.demangler=/opt/compiler-explorer/powerpc64/gcc-trunk/power ############################### # GCC for PPC64LE -group.ppc64le.compilers=fppc64leg8:fppc64leg9:fppc64leg1210:fppc64leg1220:fppc64leg1230:fppc64leg1310:fppc64leg1320:fppc64legtrunk:fppc64leg1410:fppc64leg1330:fppc64leg1240:fppc64leg1420:fppc64leg1510:fppc64leg1430:fppc64leg1340:fppc64leg1250 +group.ppc64le.compilers=fppc64leg8:fppc64leg9:fppc64leg1210:fppc64leg1220:fppc64leg1230:fppc64leg1310:fppc64leg1320:fppc64legtrunk:fppc64leg1410:fppc64leg1330:fppc64leg1240:fppc64leg1420:fppc64leg1510:fppc64leg1430:fppc64leg1340:fppc64leg1250:fppc64leg1520 group.ppc64le.groupName=POWER64le gfortran group.ppc64le.baseName=POWER64le gfortran group.ppc64le.compilerCategories=gfortran @@ -1395,6 +1459,11 @@ compiler.fppc64leg1510.semver=15.1.0 compiler.fppc64leg1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.fppc64leg1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.fppc64leg1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gfortran +compiler.fppc64leg1520.semver=15.2.0 +compiler.fppc64leg1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.fppc64leg1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.fppc64legtrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gfortran compiler.fppc64legtrunk.semver=trunk compiler.fppc64legtrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump @@ -1439,7 +1508,7 @@ compiler.frv64gtrunk.objdumper=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64- ################################ # GCC for MIPS -group.gccmips.compilers=fmipsg494:fmipsg550:fmipsg950:fmipsg1210:fmipsg1220:fmipsg1230:fmipsg1240:fmipsg1250:fmipsg1310:fmipsg1320:fmipsg1330:fmipsg1340:fmipsg1410:fmipsg1420:fmipsg1430:fmipsg1510 +group.gccmips.compilers=fmipsg494:fmipsg550:fmipsg950:fmipsg1210:fmipsg1220:fmipsg1230:fmipsg1240:fmipsg1250:fmipsg1310:fmipsg1320:fmipsg1330:fmipsg1340:fmipsg1410:fmipsg1420:fmipsg1430:fmipsg1510:fmipsg1520 group.gccmips.groupName=MIPS gfortran group.gccmips.baseName=MIPS gfortran group.gccmips.compilerCategories=gfortran @@ -1523,9 +1592,14 @@ compiler.fmipsg1510.semver=15.1.0 compiler.fmipsg1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.fmipsg1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.fmipsg1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gfortran +compiler.fmipsg1520.semver=15.2.0 +compiler.fmipsg1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.fmipsg1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ################################ # GCC for MIPS64 -group.gccmips64.compilers=fmips64g494:fmips64g550:fmips64g950:fmips64g1210:fmips64g1220:fmips64g1230:fmips64g1310:fmips64g1320:fmips64g1410:fmips64g1330:fmips64g1240:fmips64g1420:fmips64g1510:fmips64g1430:fmips64g1340:fmips64g1250 +group.gccmips64.compilers=fmips64g494:fmips64g550:fmips64g950:fmips64g1210:fmips64g1220:fmips64g1230:fmips64g1310:fmips64g1320:fmips64g1410:fmips64g1330:fmips64g1240:fmips64g1420:fmips64g1510:fmips64g1430:fmips64g1340:fmips64g1250:fmips64g1520 group.gccmips64.groupName=MIPS64 gfortran group.gccmips64.baseName=MIPS64 gfortran group.gccmips64.compilerCategories=gfortran @@ -1609,9 +1683,14 @@ compiler.fmips64g1510.semver=15.1.0 compiler.fmips64g1510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.fmips64g1510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.fmips64g1520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gfortran +compiler.fmips64g1520.semver=15.2.0 +compiler.fmips64g1520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.fmips64g1520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ################################ # GCC for MIPSEL -group.gccmipsel.compilers=fmipselg494:fmipselg550:fmipselg950:fmipselg1210:fmipselg1220:fmipselg1230:fmipselg1240:fmipselg1250:fmipselg1310:fmipselg1320:fmipselg1330:fmipselg1340:fmipselg1410:fmipselg1420:fmipselg1430:fmipselg1510 +group.gccmipsel.compilers=fmipselg494:fmipselg550:fmipselg950:fmipselg1210:fmipselg1220:fmipselg1230:fmipselg1240:fmipselg1250:fmipselg1310:fmipselg1320:fmipselg1330:fmipselg1340:fmipselg1410:fmipselg1420:fmipselg1430:fmipselg1510:fmipselg1520 group.gccmipsel.groupName=MIPSel gfortran group.gccmipsel.baseName=MIPSel gfortran group.gccmipsel.compilerCategories=gfortran @@ -1695,9 +1774,14 @@ compiler.fmipselg1510.semver=15.1.0 compiler.fmipselg1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.fmipselg1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.fmipselg1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gfortran +compiler.fmipselg1520.semver=15.2.0 +compiler.fmipselg1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.fmipselg1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ################################ # GCC for MIPS64el -group.gccmips64el.compilers=fmips64elg494:fmips64elg550:fmips64elg950:fmips64elg1210:fmips64elg1220:fmips64elg1230:fmips64elg1310:fmips64elg1320:fmips64elg1410:fmips64elg1330:fmips64elg1240:fmips64elg1420:fmips64elg1510:fmips64elg1430:fmips64elg1340:fmips64elg1250 +group.gccmips64el.compilers=fmips64elg494:fmips64elg550:fmips64elg950:fmips64elg1210:fmips64elg1220:fmips64elg1230:fmips64elg1310:fmips64elg1320:fmips64elg1410:fmips64elg1330:fmips64elg1240:fmips64elg1420:fmips64elg1510:fmips64elg1430:fmips64elg1340:fmips64elg1250:fmips64elg1520 group.gccmips64el.groupName=MIPS64el gfortran group.gccmips64el.baseName=MIPS64el gfortran group.gccmips64el.compilerCategories=gfortran @@ -1781,6 +1865,11 @@ compiler.fmips64elg1510.semver=15.1.0 compiler.fmips64elg1510.objdumper=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump compiler.fmips64elg1510.demangler=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt +compiler.fmips64elg1520.exe=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-gfortran +compiler.fmips64elg1520.semver=15.2.0 +compiler.fmips64elg1520.objdumper=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump +compiler.fmips64elg1520.demangler=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt + ################################# ################################# # Libraries diff --git a/etc/config/gimple.amazon.properties b/etc/config/gimple.amazon.properties index 776433c1b..c3caadc63 100644 --- a/etc/config/gimple.amazon.properties +++ b/etc/config/gimple.amazon.properties @@ -1,7 +1,7 @@ compilers=&gimplegcc86:&gimplecross:&wyrm -defaultCompiler=gimpleg151 -demangler=/opt/compiler-explorer/gcc-15.1.0/bin/c++filt -objdumper=/opt/compiler-explorer/gcc-15.1.0/bin/objdump +defaultCompiler=gimpleg152 +demangler=/opt/compiler-explorer/gcc-15.2.0/bin/c++filt +objdumper=/opt/compiler-explorer/gcc-15.2.0/bin/objdump needsMulti=false compilerType=gimple buildenvsetup=ceconan @@ -12,7 +12,7 @@ externalparser.exe=/usr/local/bin/asm-parser ############################### # GCC for x86 -group.gimplegcc86.compilers=&gimplegcc86assert:gimpleg91:gimpleg92:gimpleg93:gimpleg94:gimpleg95:gimpleg101:gimpleg102:gimpleg103:gimpleg104:gimpleg105:gimpleg111:gimpleg112:gimpleg113:gimpleg114:gimpleg121:gimpleg122:gimpleg123:gimpleg124:gimpleg125:gimpleg131:gimpleg132:gimpleg133:gimpleg134:gimpleg141:gimpleg142:gimpleg143:gimpleg151:gimplegsnapshot:gimplegstatic-analysis +group.gimplegcc86.compilers=&gimplegcc86assert:gimpleg91:gimpleg92:gimpleg93:gimpleg94:gimpleg95:gimpleg101:gimpleg102:gimpleg103:gimpleg104:gimpleg105:gimpleg111:gimpleg112:gimpleg113:gimpleg114:gimpleg121:gimpleg122:gimpleg123:gimpleg124:gimpleg125:gimpleg131:gimpleg132:gimpleg133:gimpleg134:gimpleg141:gimpleg142:gimpleg143:gimpleg151:gimpleg152:gimplegsnapshot:gimplegstatic-analysis group.gimplegcc86.groupName=GCC x86-64 group.gimplegcc86.instructionSet=amd64 group.gimplegcc86.isSemVer=true @@ -76,6 +76,8 @@ compiler.gimpleg143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/gcc compiler.gimpleg143.semver=14.3 compiler.gimpleg151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gcc compiler.gimpleg151.semver=15.1 +compiler.gimpleg152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gcc +compiler.gimpleg152.semver=15.2 compiler.gimplegsnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/gcc compiler.gimplegsnapshot.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt @@ -92,7 +94,7 @@ compiler.gimplegstatic-analysis.options=-fanalyzer -fdiagnostics-urls=never -fdi compiler.gimplegstatic-analysis.notification=Experimental static analyzer; see GCC wiki page ## GCC build with "assertions" (--enable-checking=XXX) -group.gimplegcc86assert.compilers=gimpleg103assert:gimpleg104assert:gimpleg105assert:gimpleg111assert:gimpleg112assert:gimpleg113assert:gimpleg114assert:gimpleg121assert:gimpleg122assert:gimpleg123assert:gimpleg124assert:gimpleg125assert:gimpleg131assert:gimpleg132assert:gimpleg133assert:gimpleg134assert:gimpleg141assert:gimpleg142assert:gimpleg143assert:gimpleg151assert +group.gimplegcc86assert.compilers=gimpleg103assert:gimpleg104assert:gimpleg105assert:gimpleg111assert:gimpleg112assert:gimpleg113assert:gimpleg114assert:gimpleg121assert:gimpleg122assert:gimpleg123assert:gimpleg124assert:gimpleg125assert:gimpleg131assert:gimpleg132assert:gimpleg133assert:gimpleg134assert:gimpleg141assert:gimpleg142assert:gimpleg143assert:gimpleg151assert:gimpleg152assert group.gimplegcc86assert.groupName=GCC x86-64 (assertions) compiler.gimpleg103assert.exe=/opt/compiler-explorer/gcc-assertions-10.3.0/bin/gcc @@ -135,10 +137,12 @@ compiler.gimpleg143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/g compiler.gimpleg143assert.semver=14.3 (assertions) compiler.gimpleg151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gcc compiler.gimpleg151assert.semver=15.1 (assertions) +compiler.gimpleg152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gcc +compiler.gimpleg152assert.semver=15.2 (assertions) ################################ # GCC for AVR -group.gimpleavr.compilers=gimpleavrg920:gimpleavrg930:gimpleavrg1030:gimpleavrg1100:gimpleavrg1210:gimpleavrg1220:gimpleavrg1230:gimpleavrg1240:gimpleavrg1250:gimpleavrg1310:gimpleavrg1320:gimpleavrg1330:gimpleavrg1340:gimpleavrg1410:gimpleavrg1420:gimpleavrg1430:gimpleavrg1510 +group.gimpleavr.compilers=gimpleavrg920:gimpleavrg930:gimpleavrg1030:gimpleavrg1100:gimpleavrg1210:gimpleavrg1220:gimpleavrg1230:gimpleavrg1240:gimpleavrg1250:gimpleavrg1310:gimpleavrg1320:gimpleavrg1330:gimpleavrg1340:gimpleavrg1410:gimpleavrg1420:gimpleavrg1430:gimpleavrg1510:gimpleavrg1520 group.gimpleavr.groupName=AVR GCC group.gimpleavr.baseName=AVR gcc group.gimpleavr.isSemVer=true @@ -223,6 +227,11 @@ compiler.gimpleavrg1510.semver=15.1.0 compiler.gimpleavrg1510.objdumper=/opt/compiler-explorer/avr/gcc-15.1.0/avr/bin/avr-objdump compiler.gimpleavrg1510.demangler=/opt/compiler-explorer/avr/gcc-15.1.0/avr/bin/avr-c++filt +compiler.gimpleavrg1520.exe=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-gcc +compiler.gimpleavrg1520.semver=15.2.0 +compiler.gimpleavrg1520.objdumper=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-objdump +compiler.gimpleavrg1520.demangler=/opt/compiler-explorer/avr/gcc-15.2.0/avr/bin/avr-c++filt + ################################ # GCC for Xtensa ESP32 group.gimplextensaesp32.compilers=gimpleesp32g2022r1:gimpleesp32g20230208:gimpleesp32g20241119 @@ -359,7 +368,7 @@ group.gimplemipss.supportsExecute=false # GCC for all MIPS ## MIPS -group.gimplemips.compilers=gimplemips930:gimplemips1120:gimplemipsg1210:gimplemipsg1220:gimplemipsg1230:gimplemipsg1240:gimplemipsg1250:gimplemipsg1310:gimplemipsg1320:gimplemipsg1330:gimplemipsg1340:gimplemipsg1410:gimplemipsg1420:gimplemipsg1430:gimplemipsg1510 +group.gimplemips.compilers=gimplemips930:gimplemips1120:gimplemipsg1210:gimplemipsg1220:gimplemipsg1230:gimplemipsg1240:gimplemipsg1250:gimplemipsg1310:gimplemipsg1320:gimplemipsg1330:gimplemipsg1340:gimplemipsg1410:gimplemipsg1420:gimplemipsg1430:gimplemipsg1510:gimplemipsg1520 group.gimplemips.groupName=MIPS GCC group.gimplemips.baseName=mips gcc @@ -436,9 +445,14 @@ compiler.gimplemipsg1510.semver=15.1.0 compiler.gimplemipsg1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.gimplemipsg1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.gimplemipsg1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc +compiler.gimplemipsg1520.semver=15.2.0 +compiler.gimplemipsg1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.gimplemipsg1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ## MIPS64 group.gimplemips64.groupName=MIPS64 GCC -group.gimplemips64.compilers=gimplemips64g1210:gimplemips64g1220:gimplemips64g1230:gimplemips64g1240:gimplemips64g1310:gimplemips64g1320:gimplemips64g1330:gimplemips64g1410:gimplemips64g1420:gimplemips64g1510:gimplemips64g1430:gimplemips64g1340:gimplemips64g1250:gimplemips112064 +group.gimplemips64.compilers=gimplemips64g1210:gimplemips64g1220:gimplemips64g1230:gimplemips64g1240:gimplemips64g1310:gimplemips64g1320:gimplemips64g1330:gimplemips64g1410:gimplemips64g1420:gimplemips64g1510:gimplemips64g1430:gimplemips64g1340:gimplemips64g1250:gimplemips64g1520:gimplemips112064 group.gimplemips64.baseName=mips64 gcc @@ -510,9 +524,14 @@ compiler.gimplemips64g1510.semver=15.1.0 compiler.gimplemips64g1510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.gimplemips64g1510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.gimplemips64g1520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gcc +compiler.gimplemips64g1520.semver=15.2.0 +compiler.gimplemips64g1520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.gimplemips64g1520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ## MIPS EL group.gimplemipsel.groupName=MIPSEL GCC -group.gimplemipsel.compilers=gimplemipselg1210:gimplemipselg1220:gimplemipselg1230:gimplemipselg1240:gimplemipselg1250:gimplemipselg1310:gimplemipselg1320:gimplemipselg1330:gimplemipselg1340:gimplemipselg1410:gimplemipselg1420:gimplemipselg1430:gimplemipselg1510 +group.gimplemipsel.compilers=gimplemipselg1210:gimplemipselg1220:gimplemipselg1230:gimplemipselg1240:gimplemipselg1250:gimplemipselg1310:gimplemipselg1320:gimplemipselg1330:gimplemipselg1340:gimplemipselg1410:gimplemipselg1420:gimplemipselg1430:gimplemipselg1510:gimplemipselg1520 group.gimplemipsel.baseName=mips (el) gcc compiler.gimplemipselg1210.exe=/opt/compiler-explorer/mipsel/gcc-12.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gcc @@ -579,9 +598,14 @@ compiler.gimplemipselg1510.semver=15.1.0 compiler.gimplemipselg1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.gimplemipselg1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.gimplemipselg1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gcc +compiler.gimplemipselg1520.semver=15.2.0 +compiler.gimplemipselg1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.gimplemipselg1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ## MIPS64 EL group.gimplemips64el.groupName=MIPS64EL GCC -group.gimplemips64el.compilers=gimplemips64elg1210:gimplemips64elg1220:gimplemips64elg1230:gimplemips64elg1240:gimplemips64elg1310:gimplemips64elg1320:gimplemips64elg1330:gimplemips64elg1410:gimplemips64elg1420:gimplemips64elg1510:gimplemips64elg1430:gimplemips64elg1340:gimplemips64elg1250 +group.gimplemips64el.compilers=gimplemips64elg1210:gimplemips64elg1220:gimplemips64elg1230:gimplemips64elg1240:gimplemips64elg1310:gimplemips64elg1320:gimplemips64elg1330:gimplemips64elg1410:gimplemips64elg1420:gimplemips64elg1510:gimplemips64elg1430:gimplemips64elg1340:gimplemips64elg1250:gimplemips64elg1520 group.gimplemips64el.baseName=mips64 (el) gcc compiler.gimplemips64elg1210.exe=/opt/compiler-explorer/mips64el/gcc-12.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-gcc @@ -648,6 +672,11 @@ compiler.gimplemips64elg1510.semver=15.1.0 compiler.gimplemips64elg1510.objdumper=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump compiler.gimplemips64elg1510.demangler=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt +compiler.gimplemips64elg1520.exe=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-gcc +compiler.gimplemips64elg1520.semver=15.2.0 +compiler.gimplemips64elg1520.objdumper=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump +compiler.gimplemips64elg1520.demangler=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt + ############################### # Cross Compilers group.gimplecross.compilers=&gimpleppcs:&gimplemipss:&gimplemsp:&gimplegccarm:&gimpleavr:&gimplervgcc:&gimplextensaesp32:&gimplextensaesp32s2:&gimplextensaesp32s3:&gimplekalray:&gimples390x:&gimplesh:&gimpleloongarch64:&gimplec6x:&gimplesparc:&gimplesparc64:&gimplesparcleon:&gimplebpf:&gimplevax:&gimplem68k:&gimplehppa:&gimpletricore @@ -676,7 +705,7 @@ compiler.gimpletricoreg1130.demangler=/opt/compiler-explorer/tricore/gcc-11.3.0/ ############################### # GCC for HPPA -group.gimplehppa.compilers=gimplehppag1420:gimplehppag1430:gimplehppag1510 +group.gimplehppa.compilers=gimplehppag1420:gimplehppag1430:gimplehppag1510:gimplehppag1520 group.gimplehppa.baseName=HPPA gcc group.gimplehppa.groupName=HPPA GCC group.gimplehppa.isSemVer=true @@ -698,9 +727,14 @@ compiler.gimplehppag1510.semver=15.1.0 compiler.gimplehppag1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.gimplehppag1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.gimplehppag1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-gcc +compiler.gimplehppag1520.semver=15.2.0 +compiler.gimplehppag1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.gimplehppag1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + ############################### # GCC for BPF -group.gimplebpf.compilers=gimplebpfg1310:gimplebpfg1320:gimplebpfg1330:gimplebpfg1340:gimplebpfg1410:gimplebpfg1420:gimplebpfg1430:gimplebpfg1510:gimplebpfgtrunk +group.gimplebpf.compilers=gimplebpfg1310:gimplebpfg1320:gimplebpfg1330:gimplebpfg1340:gimplebpfg1410:gimplebpfg1420:gimplebpfg1430:gimplebpfg1510:gimplebpfg1520:gimplebpfgtrunk group.gimplebpf.demangler=/opt/compiler-explorer/bpf/gcc-trunk/bpf-unknown-none/bin/bpf-unknown-none-c++filt group.gimplebpf.baseName=BPF gcc group.gimplebpf.groupName=BPF GCC @@ -746,6 +780,11 @@ compiler.gimplebpfg1510.semver=15.1.0 compiler.gimplebpfg1510.objdumper=/opt/compiler-explorer/bpf/gcc-15.1.0/bpf-unknown-none/bin/bpf-unknown-objdump compiler.gimplebpfg1510.demangler=/opt/compiler-explorer/bpf/gcc-15.1.0/bpf-unknown-none/bin/bpf-unknown-none-c++filt +compiler.gimplebpfg1520.exe=/opt/compiler-explorer/bpf/gcc-15.2.0/bpf-unknown-none/bin/bpf-unknown-gcc +compiler.gimplebpfg1520.semver=15.2.0 +compiler.gimplebpfg1520.objdumper=/opt/compiler-explorer/bpf/gcc-15.2.0/bpf-unknown-none/bin/bpf-unknown-objdump +compiler.gimplebpfg1520.demangler=/opt/compiler-explorer/bpf/gcc-15.2.0/bpf-unknown-none/bin/bpf-unknown-none-c++filt + compiler.gimplebpfgtrunk.exe=/opt/compiler-explorer/bpf/gcc-trunk/bpf-unknown-none/bin/bpf-unknown-gcc compiler.gimplebpfgtrunk.semver=trunk compiler.gimplebpfgtrunk.isNightly=true @@ -759,7 +798,7 @@ group.gimplem68k.compilers=&gimplegccm68k group.gimplem68k.demangler=/opt/compiler-explorer/m68k/gcc-13.1.0/m68k-unknown-elf/bin/m68k-unknown-elf-c++filt # GCC for m68k -group.gimplegccm68k.compilers=gimplem68kg1310:gimplem68kg1320:gimplem68kg1330:gimplem68kg1410:gimplem68kg1420:gimplem68kg1510:gimplem68kg1430:gimplem68kg1340 +group.gimplegccm68k.compilers=gimplem68kg1310:gimplem68kg1320:gimplem68kg1330:gimplem68kg1410:gimplem68kg1420:gimplem68kg1510:gimplem68kg1430:gimplem68kg1340:gimplem68kg1520 group.gimplegccm68k.supportsBinary=true group.gimplegccm68k.supportsExecute=false group.gimplegccm68k.baseName=M68K gcc @@ -807,12 +846,17 @@ compiler.gimplem68kg1510.semver=15.1.0 compiler.gimplem68kg1510.objdumper=/opt/compiler-explorer/m68k/gcc-15.1.0/m68k-unknown-elf/bin/m68k-unknown-elf-objdump compiler.gimplem68kg1510.demangler=/opt/compiler-explorer/m68k/gcc-15.1.0/m68k-unknown-elf/bin/m68k-unknown-elf-c++filt +compiler.gimplem68kg1520.exe=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-gcc +compiler.gimplem68kg1520.semver=15.2.0 +compiler.gimplem68kg1520.objdumper=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-objdump +compiler.gimplem68kg1520.demangler=/opt/compiler-explorer/m68k/gcc-15.2.0/m68k-unknown-elf/bin/m68k-unknown-elf-c++filt + ############################### # Cross for SPARC group.gimplesparc.compilers=&gimplegccsparc # GCC for SPARC -group.gimplegccsparc.compilers=gimplesparcg1220:gimplesparcg1230:gimplesparcg1240:gimplesparcg1250:gimplesparcg1310:gimplesparcg1320:gimplesparcg1330:gimplesparcg1340:gimplesparcg1410:gimplesparcg1420:gimplesparcg1430:gimplesparcg1510 +group.gimplegccsparc.compilers=gimplesparcg1220:gimplesparcg1230:gimplesparcg1240:gimplesparcg1250:gimplesparcg1310:gimplesparcg1320:gimplesparcg1330:gimplesparcg1340:gimplesparcg1410:gimplesparcg1420:gimplesparcg1430:gimplesparcg1510:gimplesparcg1520 group.gimplegccsparc.baseName=SPARC gcc group.gimplegccsparc.groupName=SPARC GCC group.gimplegccsparc.isSemVer=true @@ -877,12 +921,17 @@ compiler.gimplesparcg1510.semver=15.1.0 compiler.gimplesparcg1510.objdumper=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump compiler.gimplesparcg1510.demangler=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt +compiler.gimplesparcg1520.exe=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-gcc +compiler.gimplesparcg1520.semver=15.2.0 +compiler.gimplesparcg1520.objdumper=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump +compiler.gimplesparcg1520.demangler=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt + ############################### # Cross for SPARC64 group.gimplesparc64.compilers=&gimplegccsparc64 # GCC for SPARC64 -group.gimplegccsparc64.compilers=gimplesparc64g1220:gimplesparc64g1230:gimplesparc64g1240:gimplesparc64g1310:gimplesparc64g1320:gimplesparc64g1330:gimplesparc64g1410:gimplesparc64g1420:gimplesparc64g1510:gimplesparc64g1430:gimplesparc64g1340:gimplesparc64g1250 +group.gimplegccsparc64.compilers=gimplesparc64g1220:gimplesparc64g1230:gimplesparc64g1240:gimplesparc64g1310:gimplesparc64g1320:gimplesparc64g1330:gimplesparc64g1410:gimplesparc64g1420:gimplesparc64g1510:gimplesparc64g1430:gimplesparc64g1340:gimplesparc64g1250:gimplesparc64g1520 group.gimplegccsparc64.baseName=SPARC64 gcc group.gimplegccsparc64.groupName=SPARC64 GCC group.gimplegccsparc64.isSemVer=true @@ -947,12 +996,17 @@ compiler.gimplesparc64g1510.semver=15.1.0 compiler.gimplesparc64g1510.objdumper=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump compiler.gimplesparc64g1510.demangler=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt +compiler.gimplesparc64g1520.exe=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-gcc +compiler.gimplesparc64g1520.semver=15.2.0 +compiler.gimplesparc64g1520.objdumper=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump +compiler.gimplesparc64g1520.demangler=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt + ############################### # Cross for SPARC-LEON group.gimplesparcleon.compilers=&gimplegccsparcleon # GCC for SPARC-LEON -group.gimplegccsparcleon.compilers=gimplesparcleong1220:gimplesparcleong1220-1:gimplesparcleong1230:gimplesparcleong1240:gimplesparcleong1250:gimplesparcleong1310:gimplesparcleong1320:gimplesparcleong1330:gimplesparcleong1340:gimplesparcleong1410:gimplesparcleong1420:gimplesparcleong1430:gimplesparcleong1510 +group.gimplegccsparcleon.compilers=gimplesparcleong1220:gimplesparcleong1220-1:gimplesparcleong1230:gimplesparcleong1240:gimplesparcleong1250:gimplesparcleong1310:gimplesparcleong1320:gimplesparcleong1330:gimplesparcleong1340:gimplesparcleong1410:gimplesparcleong1420:gimplesparcleong1430:gimplesparcleong1510:gimplesparcleong1520 group.gimplegccsparcleon.baseName=SPARC LEON gcc group.gimplegccsparcleon.groupName=SPARC LEON GCC group.gimplegccsparcleon.isSemVer=true @@ -1019,6 +1073,11 @@ compiler.gimplesparcleong1510.semver=15.1.0 compiler.gimplesparcleong1510.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump compiler.gimplesparcleong1510.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt +compiler.gimplesparcleong1520.exe=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-gcc +compiler.gimplesparcleong1520.semver=15.2.0 +compiler.gimplesparcleong1520.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump +compiler.gimplesparcleong1520.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt + compiler.gimplesparcleong1220-1.exe=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-gcc compiler.gimplesparcleong1220-1.semver=12.2.0 compiler.gimplesparcleong1220-1.objdumper=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump @@ -1029,7 +1088,7 @@ compiler.gimplesparcleong1220-1.demangler=/opt/compiler-explorer/sparc-leon/gcc- group.gimplec6x.compilers=&gimplegccc6x # GCC for TI C6x -group.gimplegccc6x.compilers=gimplec6xg1220:gimplec6xg1230:gimplec6xg1240:gimplec6xg1310:gimplec6xg1320:gimplec6xg1330:gimplec6xg1410:gimplec6xg1420:gimplec6xg1510:gimplec6xg1430:gimplec6xg1340:gimplec6xg1250 +group.gimplegccc6x.compilers=gimplec6xg1220:gimplec6xg1230:gimplec6xg1240:gimplec6xg1310:gimplec6xg1320:gimplec6xg1330:gimplec6xg1410:gimplec6xg1420:gimplec6xg1510:gimplec6xg1430:gimplec6xg1340:gimplec6xg1250:gimplec6xg1520 group.gimplegccc6x.baseName=TI C6x gcc group.gimplegccc6x.groupName=TI C6x GCC group.gimplegccc6x.isSemVer=true @@ -1094,12 +1153,17 @@ compiler.gimplec6xg1510.semver=15.1.0 compiler.gimplec6xg1510.objdumper=/opt/compiler-explorer/c6x/gcc-15.1.0/tic6x-elf/bin/tic6x-elf-objdump compiler.gimplec6xg1510.demangler=/opt/compiler-explorer/c6x/gcc-15.1.0/tic6x-elf/bin/tic6x-elf-c++filt +compiler.gimplec6xg1520.exe=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-gcc +compiler.gimplec6xg1520.semver=15.2.0 +compiler.gimplec6xg1520.objdumper=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-objdump +compiler.gimplec6xg1520.demangler=/opt/compiler-explorer/c6x/gcc-15.2.0/tic6x-elf/bin/tic6x-elf-c++filt + ############################### # Cross for loongarch64 group.gimpleloongarch64.compilers=&gimplegccloongarch64 # GCC for loongarch64 -group.gimplegccloongarch64.compilers=gimpleloongarch64g1220:gimpleloongarch64g1230:gimpleloongarch64g1240:gimpleloongarch64g1310:gimpleloongarch64g1320:gimpleloongarch64g1330:gimpleloongarch64g1410:gimpleloongarch64g1420:gimpleloongarch64g1510:gimpleloongarch64g1430:gimpleloongarch64g1340:gimpleloongarch64g1250 +group.gimplegccloongarch64.compilers=gimpleloongarch64g1220:gimpleloongarch64g1230:gimpleloongarch64g1240:gimpleloongarch64g1310:gimpleloongarch64g1320:gimpleloongarch64g1330:gimpleloongarch64g1410:gimpleloongarch64g1420:gimpleloongarch64g1510:gimpleloongarch64g1430:gimpleloongarch64g1340:gimpleloongarch64g1250:gimpleloongarch64g1520 group.gimplegccloongarch64.baseName=loongarch64 gcc group.gimplegccloongarch64.groupName=loongarch64 GCC group.gimplegccloongarch64.isSemVer=true @@ -1164,12 +1228,17 @@ compiler.gimpleloongarch64g1510.semver=15.1.0 compiler.gimpleloongarch64g1510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.gimpleloongarch64g1510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.gimpleloongarch64g1520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-gcc +compiler.gimpleloongarch64g1520.semver=15.2.0 +compiler.gimpleloongarch64g1520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.gimpleloongarch64g1520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ############################### # Cross for sh group.gimplesh.compilers=&gimplegccsh # GCC for sh -group.gimplegccsh.compilers=gimpleshg950:gimpleshg1220:gimpleshg1230:gimpleshg1240:gimpleshg1250:gimpleshg1310:gimpleshg1320:gimpleshg1330:gimpleshg1340:gimpleshg1410:gimpleshg1420:gimpleshg1430:gimpleshg1510 +group.gimplegccsh.compilers=gimpleshg950:gimpleshg1220:gimpleshg1230:gimpleshg1240:gimpleshg1250:gimpleshg1310:gimpleshg1320:gimpleshg1330:gimpleshg1340:gimpleshg1410:gimpleshg1420:gimpleshg1430:gimpleshg1510:gimpleshg1520 group.gimplegccsh.baseName=sh gcc group.gimplegccsh.groupName=sh GCC group.gimplegccsh.isSemVer=true @@ -1239,12 +1308,17 @@ compiler.gimpleshg1510.semver=15.1.0 compiler.gimpleshg1510.objdumper=/opt/compiler-explorer/sh/gcc-15.1.0/sh-unknown-elf/bin/sh-unknown-elf-objdump compiler.gimpleshg1510.demangler=/opt/compiler-explorer/sh/gcc-15.1.0/sh-unknown-elf/bin/sh-unknown-elf-c++filt +compiler.gimpleshg1520.exe=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-gcc +compiler.gimpleshg1520.semver=15.2.0 +compiler.gimpleshg1520.objdumper=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-objdump +compiler.gimpleshg1520.demangler=/opt/compiler-explorer/sh/gcc-15.2.0/sh-unknown-elf/bin/sh-unknown-elf-c++filt + ############################### # Cross for s390x group.gimples390x.compilers=&gimplegccs390x # GCC for s390x -group.gimplegccs390x.compilers=gimplegccs390x112:gimples390xg1210:gimples390xg1220:gimples390xg1230:gimples390xg1240:gimples390xg1310:gimples390xg1320:gimples390xg1330:gimples390xg1410:gimples390xg1420:gimples390xg1510:gimples390xg1430:gimples390xg1340:gimples390xg1250 +group.gimplegccs390x.compilers=gimplegccs390x112:gimples390xg1210:gimples390xg1220:gimples390xg1230:gimples390xg1240:gimples390xg1310:gimples390xg1320:gimples390xg1330:gimples390xg1410:gimples390xg1420:gimples390xg1510:gimples390xg1430:gimples390xg1340:gimples390xg1250:gimples390xg1520 group.gimplegccs390x.baseName=s390x gcc group.gimplegccs390x.groupName=s390x GCC group.gimplegccs390x.isSemVer=true @@ -1317,13 +1391,18 @@ compiler.gimples390xg1510.semver=15.1.0 compiler.gimples390xg1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.gimples390xg1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.gimples390xg1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-gcc +compiler.gimples390xg1520.semver=15.2.0 +compiler.gimples390xg1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.gimples390xg1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ############################### # Cross compilers for PPC group.gimpleppcs.compilers=&gimpleppc:&gimpleppc64:&gimpleppc64le group.gimpleppcs.isSemVer=true group.gimpleppcs.instructionSet=powerpc -group.gimpleppc.compilers=gimpleppcg1120:gimpleppcg1210:gimpleppcg1220:gimpleppcg1230:gimpleppcg1240:gimpleppcg1250:gimpleppcg1310:gimpleppcg1320:gimpleppcg1330:gimpleppcg1340:gimpleppcg1410:gimpleppcg1420:gimpleppcg1430:gimpleppcg1510 +group.gimpleppc.compilers=gimpleppcg1120:gimpleppcg1210:gimpleppcg1220:gimpleppcg1230:gimpleppcg1240:gimpleppcg1250:gimpleppcg1310:gimpleppcg1320:gimpleppcg1330:gimpleppcg1340:gimpleppcg1410:gimpleppcg1420:gimpleppcg1430:gimpleppcg1510:gimpleppcg1520 group.gimpleppc.groupName=POWER group.gimpleppc.baseName=power gcc @@ -1395,7 +1474,12 @@ compiler.gimpleppcg1510.semver=15.1.0 compiler.gimpleppcg1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.gimpleppcg1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt -group.gimpleppc64.compilers=gimpleppc64g9:gimpleppc64g1120:gimpleppc64g1210:gimpleppc64g1220:gimpleppc64g1230:gimpleppc64g1240:gimpleppc64g1310:gimpleppc64g1320:gimpleppc64g1330:gimpleppc64g1410:gimpleppc64g1420:gimpleppc64g1510:gimpleppc64g1430:gimpleppc64g1340:gimpleppc64g1250 +compiler.gimpleppcg1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gcc +compiler.gimpleppcg1520.semver=15.2.0 +compiler.gimpleppcg1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.gimpleppcg1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + +group.gimpleppc64.compilers=gimpleppc64g9:gimpleppc64g1120:gimpleppc64g1210:gimpleppc64g1220:gimpleppc64g1230:gimpleppc64g1240:gimpleppc64g1310:gimpleppc64g1320:gimpleppc64g1330:gimpleppc64g1410:gimpleppc64g1420:gimpleppc64g1510:gimpleppc64g1430:gimpleppc64g1340:gimpleppc64g1250:gimpleppc64g1520 group.gimpleppc64.groupName=POWER64 group.gimpleppc64.baseName=POWER64 gcc @@ -1472,7 +1556,12 @@ compiler.gimpleppc64g1510.semver=15.1.0 compiler.gimpleppc64g1510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.gimpleppc64g1510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt -group.gimpleppc64le.compilers=gimpleppc64leg9:gimpleppc64leg1120:gimpleppc64leg1210:gimpleppc64leg1220:gimpleppc64leg1230:gimpleppc64leg1240:gimpleppc64leg1310:gimpleppc64leg1320:gimpleppc64leg1330:gimpleppc64leg1410:gimpleppc64leg1420:gimpleppc64leg1510:gimpleppc64leg1430:gimpleppc64leg1340:gimpleppc64leg1250 +compiler.gimpleppc64g1520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gcc +compiler.gimpleppc64g1520.semver=15.2.0 +compiler.gimpleppc64g1520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.gimpleppc64g1520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + +group.gimpleppc64le.compilers=gimpleppc64leg9:gimpleppc64leg1120:gimpleppc64leg1210:gimpleppc64leg1220:gimpleppc64leg1230:gimpleppc64leg1240:gimpleppc64leg1310:gimpleppc64leg1320:gimpleppc64leg1330:gimpleppc64leg1410:gimpleppc64leg1420:gimpleppc64leg1510:gimpleppc64leg1430:gimpleppc64leg1340:gimpleppc64leg1250:gimpleppc64leg1520 group.gimpleppc64le.groupName=POWER64LE GCC group.gimpleppc64le.baseName=power64le gcc @@ -1549,10 +1638,15 @@ compiler.gimpleppc64leg1510.semver=15.1.0 compiler.gimpleppc64leg1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.gimpleppc64leg1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.gimpleppc64leg1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gcc +compiler.gimpleppc64leg1520.semver=15.2.0 +compiler.gimpleppc64leg1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.gimpleppc64leg1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + ################################ # GCC for MSP -group.gimplemsp.compilers=gimplemsp430g1210:gimplemsp430g1220:gimplemsp430g1230:gimplemsp430g1240:gimplemsp430g1310:gimplemsp430g1320:gimplemsp430g1330:gimplemsp430g1410:gimplemsp430g1420:gimplemsp430g1510:gimplemsp430g1430:gimplemsp430g1340:gimplemsp430g1250 +group.gimplemsp.compilers=gimplemsp430g1210:gimplemsp430g1220:gimplemsp430g1230:gimplemsp430g1240:gimplemsp430g1310:gimplemsp430g1320:gimplemsp430g1330:gimplemsp430g1410:gimplemsp430g1420:gimplemsp430g1510:gimplemsp430g1430:gimplemsp430g1340:gimplemsp430g1250:gimplemsp430g1520 group.gimplemsp.groupName=MSP GCC group.gimplemsp.baseName=MSP430 gcc group.gimplemsp.isSemVer=true @@ -1622,6 +1716,11 @@ compiler.gimplemsp430g1510.semver=15.1.0 compiler.gimplemsp430g1510.objdumper=/opt/compiler-explorer/msp430/gcc-15.1.0/msp430-unknown-elf/bin/msp430-unknown-elf-objdump compiler.gimplemsp430g1510.demangler=/opt/compiler-explorer/msp430/gcc-15.1.0/msp430-unknown-elf/bin/msp430-unknown-elf-c++filt +compiler.gimplemsp430g1520.exe=/opt/compiler-explorer/msp430/gcc-15.2.0/msp430-unknown-elf/bin/msp430-unknown-elf-gcc +compiler.gimplemsp430g1520.semver=15.2.0 +compiler.gimplemsp430g1520.objdumper=/opt/compiler-explorer/msp430/gcc-15.2.0/msp430-unknown-elf/bin/msp430-unknown-elf-objdump +compiler.gimplemsp430g1520.demangler=/opt/compiler-explorer/msp430/gcc-15.2.0/msp430-unknown-elf/bin/msp430-unknown-elf-c++filt + ############################### # GCC for ARM @@ -1635,7 +1734,7 @@ group.gimplegccarm.includeFlag=-I # 32 bit group.gimplegcc32arm.groupName=Arm 32-bit GCC group.gimplegcc32arm.baseName=ARM GCC -group.gimplegcc32arm.compilers=gimplearm921:gimplearm930:gimplearm1020:gimplearm1021:gimplearm1030:gimplearm1031_07:gimplearm1031_10:gimplearmg1050:gimplearm1100:gimplearm1120:gimplearm1121:gimplearm1130:gimplearmg1140:gimplearm1210:gimplearmg1220:gimplearmg1230:gimplearmg1240:gimplearmg1250:gimplearmg1310:gimplearmg1320:gimplearmug1320:gimplearmg1330:gimplearmug1330:gimplearmg1340:gimplearmug1340:gimplearmg1410:gimplearmug1410:gimplearmg1420:gimplearmug1420:gimplearmg1430:gimplearmug1430:gimplearmg1510:gimplearmgtrunk +group.gimplegcc32arm.compilers=gimplearm921:gimplearm930:gimplearm1020:gimplearm1021:gimplearm1030:gimplearm1031_07:gimplearm1031_10:gimplearmg1050:gimplearm1100:gimplearm1120:gimplearm1121:gimplearm1130:gimplearmg1140:gimplearm1210:gimplearmg1220:gimplearmg1230:gimplearmg1240:gimplearmg1250:gimplearmg1310:gimplearmg1320:gimplearmug1320:gimplearmg1330:gimplearmug1330:gimplearmg1340:gimplearmug1340:gimplearmg1410:gimplearmug1410:gimplearmg1420:gimplearmug1420:gimplearmg1430:gimplearmug1430:gimplearmg1510:gimplearmug1510:gimplearmg1520:gimplearmug1520:gimplearmgtrunk group.gimplegcc32arm.isSemVer=true group.gimplegcc32arm.objdumper=/opt/compiler-explorer/arm/gcc-10.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump group.gimplegcc32arm.instructionSet=arm32 @@ -1710,6 +1809,11 @@ compiler.gimplearmg1510.semver=15.1.0 compiler.gimplearmg1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.gimplearmg1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.gimplearmg1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gcc +compiler.gimplearmg1520.semver=15.2.0 +compiler.gimplearmg1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.gimplearmg1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + compiler.gimplearmug1320.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-13.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-gcc compiler.gimplearmug1320.name=ARM GCC 13.2.0 (unknown-eabi) compiler.gimplearmug1320.semver=13.2.0 @@ -1746,6 +1850,18 @@ compiler.gimplearmug1430.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-14 compiler.gimplearmug1430.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-14.3.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt compiler.gimplearmug1430.name=ARM GCC 14.3.0 (unknown-eabi) +compiler.gimplearmug1510.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-gcc +compiler.gimplearmug1510.semver=15.1.0 +compiler.gimplearmug1510.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-objdump +compiler.gimplearmug1510.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-15.1.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt +compiler.gimplearmug1510.name=ARM GCC 15.1.0 (unknown-eabi) + +compiler.gimplearmug1520.exe=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-gcc +compiler.gimplearmug1520.semver=15.2.0 +compiler.gimplearmug1520.objdumper=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-objdump +compiler.gimplearmug1520.demangler=/opt/compiler-explorer/arm/gcc-arm-unknown-15.2.0/arm-unknown-eabi/bin/arm-unknown-eabi-c++filt +compiler.gimplearmug1520.name=ARM GCC 15.2.0 (unknown-eabi) + compiler.gimplearm921.exe=/opt/compiler-explorer/arm/gcc-arm-none-eabi-9-2019-q4-major/bin/arm-none-eabi-gcc compiler.gimplearm921.semver=9.2.1 (none) compiler.gimplearm921.supportsBinary=false @@ -1785,7 +1901,7 @@ compiler.gimplearmgtrunk.isNightly=true # 64 bit group.gimplegcc64arm.groupName=ARM64 gcc group.gimplegcc64arm.baseName=ARM64 GCC -group.gimplegcc64arm.compilers=gimplearm64g930:gimplearm64g940:gimplearm64g950:gimplearm64g1020:gimplearm64g1030:gimplearm64g1040:gimplearm64g1100:gimplearm64g1120:gimplearm64g1130:gimplearm64g1140:gimplearm64g1210:gimplearm64gtrunk:gimplearm64g1220:gimplearm64g1230:gimplearm64g1240:gimplearm64g1310:gimplearm64g1050:gimplearm64g1320:gimplearm64g1330:gimplearm64g1410:gimplearm64g1420:gimplearm64g1510:gimplearm64g1430:gimplearm64g1340:gimplearm64g1250 +group.gimplegcc64arm.compilers=gimplearm64g930:gimplearm64g940:gimplearm64g950:gimplearm64g1020:gimplearm64g1030:gimplearm64g1040:gimplearm64g1100:gimplearm64g1120:gimplearm64g1130:gimplearm64g1140:gimplearm64g1210:gimplearm64gtrunk:gimplearm64g1220:gimplearm64g1230:gimplearm64g1240:gimplearm64g1310:gimplearm64g1050:gimplearm64g1320:gimplearm64g1330:gimplearm64g1410:gimplearm64g1420:gimplearm64g1510:gimplearm64g1430:gimplearm64g1340:gimplearm64g1250:gimplearm64g1520 group.gimplegcc64arm.isSemVer=true group.gimplegcc64arm.objdumper=/opt/compiler-explorer/arm64/gcc-10.2.0/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/bin/objdump group.gimplegcc64arm.instructionSet=aarch64 @@ -1883,6 +1999,11 @@ compiler.gimplearm64g1510.semver=15.1.0 compiler.gimplearm64g1510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.gimplearm64g1510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.gimplearm64g1520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc +compiler.gimplearm64g1520.semver=15.2.0 +compiler.gimplearm64g1520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.gimplearm64g1520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + compiler.gimplearm64gtrunk.exe=/opt/compiler-explorer/arm64/gcc-trunk/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc compiler.gimplearm64gtrunk.semver=trunk compiler.gimplearm64gtrunk.isNightly=true @@ -1910,7 +2031,7 @@ group.gimplervgcc.supportsBinary=true group.gimplervgcc.supportsBinaryObject=true ## GCC for RISC-V 64-bits -group.rv64-gimplegccs.compilers=rv64-gimplegcctrunk:rv64-gimplegcc1230:rv64-gimplegcc1240:rv64-gimplegcc1210:rv64-gimplegcc1140:rv64-gimplegcc1130:rv64-gimplegcc1220:rv64-gimplegcc1120:rv64-gimplegcc1030:rv64-gimplegcc1020:rv64-gimplegcc940:rv64-gimplegcc1310:rv64-gimplegcc1320:rv64-gimplegcc1330:rv64-gimplegcc1410:rv64-gimplegcc1420:rv64-gimplegcc1510:rv64-gimplegcc1430:rv64-gimplegcc1340:rv64-gimplegcc1250 +group.rv64-gimplegccs.compilers=rv64-gimplegcctrunk:rv64-gimplegcc1230:rv64-gimplegcc1240:rv64-gimplegcc1210:rv64-gimplegcc1140:rv64-gimplegcc1130:rv64-gimplegcc1220:rv64-gimplegcc1120:rv64-gimplegcc1030:rv64-gimplegcc1020:rv64-gimplegcc940:rv64-gimplegcc1310:rv64-gimplegcc1320:rv64-gimplegcc1330:rv64-gimplegcc1410:rv64-gimplegcc1420:rv64-gimplegcc1510:rv64-gimplegcc1430:rv64-gimplegcc1340:rv64-gimplegcc1250:rv64-gimplegcc1520 group.rv64-gimplegccs.groupName=RISC-V (64-bits) gcc group.rv64-gimplegccs.baseName=RISC-V (64-bits) gcc @@ -2003,6 +2124,11 @@ compiler.rv64-gimplegcc1510.semver=15.1.0 compiler.rv64-gimplegcc1510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.rv64-gimplegcc1510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.rv64-gimplegcc1520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gcc +compiler.rv64-gimplegcc1520.semver=15.2.0 +compiler.rv64-gimplegcc1520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.rv64-gimplegcc1520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + compiler.rv64-gimplegcctrunk.exe=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gcc compiler.rv64-gimplegcctrunk.semver=(trunk) compiler.rv64-gimplegcctrunk.objdumper=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump @@ -2010,7 +2136,7 @@ compiler.rv64-gimplegcctrunk.demangler=/opt/compiler-explorer/riscv64/gcc-trunk/ compiler.rv64-gimplegcctrunk.isNightly=true ## GCC for RISC-V 32-bits -group.rv32-gimplegccs.compilers=rv32-gimplegcctrunk:rv32-gimplegcc1220:rv32-gimplegcc1210:rv32-gimplegcc1140:rv32-gimplegcc1130:rv32-gimplegcc1120:rv32-gimplegcc1030:rv32-gimplegcc1020:rv32-gimplegcc940:rv32-gimplegcc1310:rv32-gimplegcc1230:rv32-gimplegcc1240:rv32-gimplegcc1320:rv32-gimplegcc1330:rv32-gimplegcc1410:rv32-gimplegcc1420:rv32-gimplegcc1510:rv32-gimplegcc1430:rv32-gimplegcc1340:rv32-gimplegcc1250 +group.rv32-gimplegccs.compilers=rv32-gimplegcctrunk:rv32-gimplegcc1220:rv32-gimplegcc1210:rv32-gimplegcc1140:rv32-gimplegcc1130:rv32-gimplegcc1120:rv32-gimplegcc1030:rv32-gimplegcc1020:rv32-gimplegcc940:rv32-gimplegcc1310:rv32-gimplegcc1230:rv32-gimplegcc1240:rv32-gimplegcc1320:rv32-gimplegcc1330:rv32-gimplegcc1410:rv32-gimplegcc1420:rv32-gimplegcc1510:rv32-gimplegcc1430:rv32-gimplegcc1340:rv32-gimplegcc1250:rv32-gimplegcc1520 group.rv32-gimplegccs.groupName=RISC-V (32-bits) gcc group.rv32-gimplegccs.baseName=RISC-V (32-bits) gcc @@ -2103,6 +2229,11 @@ compiler.rv32-gimplegcc1510.semver=15.1.0 compiler.rv32-gimplegcc1510.objdumper=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.rv32-gimplegcc1510.demangler=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt +compiler.rv32-gimplegcc1520.exe=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gcc +compiler.rv32-gimplegcc1520.semver=15.2.0 +compiler.rv32-gimplegcc1520.objdumper=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump +compiler.rv32-gimplegcc1520.demangler=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt + compiler.rv32-gimplegcctrunk.exe=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gcc compiler.rv32-gimplegcctrunk.semver=(trunk) compiler.rv32-gimplegcctrunk.isNightly=true diff --git a/etc/config/go.amazon.properties b/etc/config/go.amazon.properties index 0e6f8856a..789ca7037 100644 --- a/etc/config/go.amazon.properties +++ b/etc/config/go.amazon.properties @@ -2,7 +2,7 @@ compilers=&gccgo:&gl:&cross defaultCompiler=gl1242 objdumper=/opt/compiler-explorer/gcc-13.1.0/bin/objdump -group.gccgo.compilers=&gccgoassert:gccgo494:gccgo630:gccgo720:gccgo830:gccgo930:gccgo950:gccgo102:gccgo105:gccgo111:gccgo112:gccgo113:gccgo114:gccgo121:gccgo122:gccgo123:gccgo124:gccgo125:gccgo131:gccgo132:gccgo133:gccgo134:gccgo141:gccgo142:gccgo143:gccgo151 +group.gccgo.compilers=&gccgoassert:gccgo494:gccgo630:gccgo720:gccgo830:gccgo930:gccgo950:gccgo102:gccgo105:gccgo111:gccgo112:gccgo113:gccgo114:gccgo121:gccgo122:gccgo123:gccgo124:gccgo125:gccgo131:gccgo132:gccgo133:gccgo134:gccgo141:gccgo142:gccgo143:gccgo151:gccgo152 group.gccgo.isSemVer=true group.gccgo.baseName=x86 gccgo compiler.gccgo494.exe=/opt/compiler-explorer/gcc-4.9.4/bin/gccgo @@ -57,9 +57,11 @@ compiler.gccgo143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/gccgo compiler.gccgo143.semver=14.3 compiler.gccgo151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gccgo compiler.gccgo151.semver=15.1 +compiler.gccgo152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gccgo +compiler.gccgo152.semver=15.2 ## GCC x86 build with "assertions" (--enable-checking=XXX) -group.gccgoassert.compilers=gccgo105assert:gccgo111assert:gccgo112assert:gccgo113assert:gccgo114assert:gccgo121assert:gccgo122assert:gccgo123assert:gccgo124assert:gccgo125assert:gccgo131assert:gccgo132assert:gccgo133assert:gccgo134assert:gccgo141assert:gccgo142assert:gccgo143assert:gccgo151assert +group.gccgoassert.compilers=gccgo105assert:gccgo111assert:gccgo112assert:gccgo113assert:gccgo114assert:gccgo121assert:gccgo122assert:gccgo123assert:gccgo124assert:gccgo125assert:gccgo131assert:gccgo132assert:gccgo133assert:gccgo134assert:gccgo141assert:gccgo142assert:gccgo143assert:gccgo151assert:gccgo152assert group.gccgoassert.groupName=x86 gccgo (assertions) compiler.gccgo105assert.exe=/opt/compiler-explorer/gcc-assertions-10.5.0/bin/gccgo @@ -98,7 +100,8 @@ compiler.gccgo143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/gcc compiler.gccgo143assert.semver=14.3 (assertions) compiler.gccgo151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gccgo compiler.gccgo151assert.semver=15.1 (assertions) - +compiler.gccgo152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gccgo +compiler.gccgo152assert.semver=15.2 (assertions) group.gl.compilers=&x86gl:&armgl:&mipsgl:&ppcgl:&riscvgl:&s390xgl:&wasmgl group.gl.versionFlag=version @@ -445,7 +448,7 @@ compiler.ppc64le_gl120.exe=/opt/compiler-explorer/golang-1.20/go/bin/go compiler.ppc64le_gl120.semver=1.20 compiler.ppc64le_gl121.exe=/opt/compiler-explorer/golang-1.21.13/go/bin/go compiler.ppc64le_gl121.semver=1.21.13 -compiler.ppc64le_gl122.exe=/opt/compiler-explorer/golang-1.22.1)/go/bin/go +compiler.ppc64le_gl122.exe=/opt/compiler-explorer/golang-1.22.1/go/bin/go compiler.ppc64le_gl122.semver=1.22.12 compiler.ppc64le_gl123.exe=/opt/compiler-explorer/golang-1.23.8/go/bin/go compiler.ppc64le_gl123.semver=1.23.8 @@ -600,7 +603,7 @@ group.cross.groupName=Cross Go ############################### # GCC for sparc -group.gccgosparc.compilers=gccgosparc1220:gccgosparc1230:gccgosparc1240:gccgosparc1250:gccgosparc1310:gccgosparc1320:gccgosparc1330:gccgosparc1340:gccgosparc1410:gccgosparc1420:gccgosparc1430:gccgosparc1510 +group.gccgosparc.compilers=gccgosparc1220:gccgosparc1230:gccgosparc1240:gccgosparc1250:gccgosparc1310:gccgosparc1320:gccgosparc1330:gccgosparc1340:gccgosparc1410:gccgosparc1420:gccgosparc1430:gccgosparc1510:gccgosparc1520 group.gccgosparc.groupName=SPARC GCCGO group.gccgosparc.baseName=SPARC gccgo group.gccgosparc.isSemVer=true @@ -665,9 +668,14 @@ compiler.gccgosparc1510.semver=15.1.0 compiler.gccgosparc1510.objdumper=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump compiler.gccgosparc1510.demangler=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt +compiler.gccgosparc1520.exe=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-gccgo +compiler.gccgosparc1520.semver=15.2.0 +compiler.gccgosparc1520.objdumper=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump +compiler.gccgosparc1520.demangler=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt + ############################### # GCC for sparc64 -group.gccgosparc64.compilers=gccgosparc641220:gccgosparc641230:gccgosparc641240:gccgosparc641250:gccgosparc641310:gccgosparc641320:gccgosparc641330:gccgosparc641340:gccgosparc641410:gccgosparc641420:gccgosparc641430:gccgosparc641510 +group.gccgosparc64.compilers=gccgosparc641220:gccgosparc641230:gccgosparc641240:gccgosparc641250:gccgosparc641310:gccgosparc641320:gccgosparc641330:gccgosparc641340:gccgosparc641410:gccgosparc641420:gccgosparc641430:gccgosparc641510:gccgosparc641520 group.gccgosparc64.groupName=SPARC64 GCCGO group.gccgosparc64.baseName=SPARC64 gccgo group.gccgosparc64.isSemVer=true @@ -733,9 +741,14 @@ compiler.gccgosparc641510.semver=15.1.0 compiler.gccgosparc641510.objdumper=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump compiler.gccgosparc641510.demangler=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt +compiler.gccgosparc641520.exe=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-gccgo +compiler.gccgosparc641520.semver=15.2.0 +compiler.gccgosparc641520.objdumper=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump +compiler.gccgosparc641520.demangler=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt + ############################### # GCC for mips64el -group.gccgomips64el.compilers=gccgomips64el1220:gccgomips64el1230:gccgomips64el1310:gccgomips64el1320:gccgomips64el1410:gccgomips64el1330:gccgomips64el1240:gccgomips64el1420:gccgomips64el1510:gccgomips64el1430:gccgomips64el1340:gccgomips64el1250 +group.gccgomips64el.compilers=gccgomips64el1220:gccgomips64el1230:gccgomips64el1310:gccgomips64el1320:gccgomips64el1410:gccgomips64el1330:gccgomips64el1240:gccgomips64el1420:gccgomips64el1510:gccgomips64el1430:gccgomips64el1340:gccgomips64el1250:gccgomips64el1520 group.gccgomips64el.groupName=MIPS64EL GCCGO group.gccgomips64el.baseName=MIPS64EL gccgo group.gccgomips64el.isSemVer=true @@ -800,9 +813,14 @@ compiler.gccgomips64el1510.semver=15.1.0 compiler.gccgomips64el1510.objdumper=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump compiler.gccgomips64el1510.demangler=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt +compiler.gccgomips64el1520.exe=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-gccgo +compiler.gccgomips64el1520.semver=15.2.0 +compiler.gccgomips64el1520.objdumper=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump +compiler.gccgomips64el1520.demangler=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt + ############################### # GCC for mipsel -group.gccgomipsel.compilers=gccgomipsel1220:gccgomipsel1230:gccgomipsel1240:gccgomipsel1250:gccgomipsel1310:gccgomipsel1320:gccgomipsel1330:gccgomipsel1340:gccgomipsel1410:gccgomipsel1420:gccgomipsel1430:gccgomipsel1510 +group.gccgomipsel.compilers=gccgomipsel1220:gccgomipsel1230:gccgomipsel1240:gccgomipsel1250:gccgomipsel1310:gccgomipsel1320:gccgomipsel1330:gccgomipsel1340:gccgomipsel1410:gccgomipsel1420:gccgomipsel1430:gccgomipsel1510:gccgomipsel1520 group.gccgomipsel.groupName=MIPSEL GCCGO group.gccgomipsel.baseName=MIPSEL gccgo group.gccgomipsel.isSemVer=true @@ -867,9 +885,14 @@ compiler.gccgomipsel1510.semver=15.1.0 compiler.gccgomipsel1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.gccgomipsel1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.gccgomipsel1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gccgo +compiler.gccgomipsel1520.semver=15.2.0 +compiler.gccgomipsel1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.gccgomipsel1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ############################### # GCC for riscv64 -group.gccgoriscv64.compilers=gccgoriscv641220:gccgoriscv641230:gccgoriscv641240:gccgoriscv641250:gccgoriscv641310:gccgoriscv641320:gccgoriscv641330:gccgoriscv641340:gccgoriscv641410:gccgoriscv641420:gccgoriscv641430:gccgoriscv641510 +group.gccgoriscv64.compilers=gccgoriscv641220:gccgoriscv641230:gccgoriscv641240:gccgoriscv641250:gccgoriscv641310:gccgoriscv641320:gccgoriscv641330:gccgoriscv641340:gccgoriscv641410:gccgoriscv641420:gccgoriscv641430:gccgoriscv641510:gccgoriscv641520 group.gccgoriscv64.groupName=RISC-V 64 GCCGO group.gccgoriscv64.baseName=RISC-V 64 gccgo group.gccgoriscv64.isSemVer=true @@ -934,9 +957,14 @@ compiler.gccgoriscv641510.semver=15.1.0 compiler.gccgoriscv641510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.gccgoriscv641510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.gccgoriscv641520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-gccgo +compiler.gccgoriscv641520.semver=15.2.0 +compiler.gccgoriscv641520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.gccgoriscv641520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + ############################### # GCC for s390x -group.gccgos390x.compilers=gccgos390x1220:gccgos390x1230:gccgos390x1310:gccgos390x1320:gccgos390x1410:gccgos390x1330:gccgos390x1240:gccgos390x1420:gccgos390x1510:gccgos390x1430:gccgos390x1340:gccgos390x1250 +group.gccgos390x.compilers=gccgos390x1220:gccgos390x1230:gccgos390x1310:gccgos390x1320:gccgos390x1410:gccgos390x1330:gccgos390x1240:gccgos390x1420:gccgos390x1510:gccgos390x1430:gccgos390x1340:gccgos390x1250:gccgos390x1520 group.gccgos390x.groupName=S390X GCCGO group.gccgos390x.baseName=S390X gccgo group.gccgos390x.isSemVer=true @@ -1001,9 +1029,14 @@ compiler.gccgos390x1510.semver=15.1.0 compiler.gccgos390x1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.gccgos390x1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.gccgos390x1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-gccgo +compiler.gccgos390x1520.semver=15.2.0 +compiler.gccgos390x1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.gccgos390x1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ############################### # GCC for MIPS -group.gccgomips.compilers=gccgomips1220:gccgomips1230:gccgomips1240:gccgomips1250:gccgomips1310:gccgomips1320:gccgomips1330:gccgomips1340:gccgomips1410:gccgomips1420:gccgomips1430:gccgomips1510 +group.gccgomips.compilers=gccgomips1220:gccgomips1230:gccgomips1240:gccgomips1250:gccgomips1310:gccgomips1320:gccgomips1330:gccgomips1340:gccgomips1410:gccgomips1420:gccgomips1430:gccgomips1510:gccgomips1520 group.gccgomips.groupName=MIPS GCCGO group.gccgomips.baseName=MIPS gccgo group.gccgomips.isSemVer=true @@ -1068,9 +1101,14 @@ compiler.gccgomips1510.semver=15.1.0 compiler.gccgomips1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.gccgomips1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.gccgomips1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gccgo +compiler.gccgomips1520.semver=15.2.0 +compiler.gccgomips1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.gccgomips1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ############################### # GCC for MIPS64 -group.gccgomips64.compilers=gccgomips641220:gccgomips641230:gccgomips641240:gccgomips641250:gccgomips641310:gccgomips641320:gccgomips641330:gccgomips641340:gccgomips641410:gccgomips641420:gccgomips641430:gccgomips641510 +group.gccgomips64.compilers=gccgomips641220:gccgomips641230:gccgomips641240:gccgomips641250:gccgomips641310:gccgomips641320:gccgomips641330:gccgomips641340:gccgomips641410:gccgomips641420:gccgomips641430:gccgomips641510:gccgomips641520 group.gccgomips64.groupName=MIPS64 GCCGO group.gccgomips64.baseName=MIPS64 gccgo group.gccgomips64.isSemVer=true @@ -1135,9 +1173,14 @@ compiler.gccgomips641510.semver=15.1.0 compiler.gccgomips641510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.gccgomips641510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.gccgomips641520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gccgo +compiler.gccgomips641520.semver=15.2.0 +compiler.gccgomips641520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.gccgomips641520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ############################### # GCC for ARM64 -group.gccgoarm64.compilers=gccgoarm641220:gccgoarm641230:gccgoarm641240:gccgoarm641250:gccgoarm641310:gccgoarm641320:gccgoarm641330:gccgoarm641340:gccgoarm641410:gccgoarm641420:gccgoarm641430:gccgoarm641510 +group.gccgoarm64.compilers=gccgoarm641220:gccgoarm641230:gccgoarm641240:gccgoarm641250:gccgoarm641310:gccgoarm641320:gccgoarm641330:gccgoarm641340:gccgoarm641410:gccgoarm641420:gccgoarm641430:gccgoarm641510:gccgoarm641520 group.gccgoarm64.groupName=ARM64 GCCGO group.gccgoarm64.baseName=ARM64 gccgo group.gccgoarm64.isSemVer=true @@ -1202,9 +1245,14 @@ compiler.gccgoarm641510.semver=15.1.0 compiler.gccgoarm641510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.gccgoarm641510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.gccgoarm641520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gccgo +compiler.gccgoarm641520.semver=15.2.0 +compiler.gccgoarm641520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.gccgoarm641520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + ############################### # GCC for ARM -group.gccgoarm.compilers=gccgoarm1220:gccgoarm1230:gccgoarm1240:gccgoarm1250:gccgoarm1310:gccgoarm1320:gccgoarm1330:gccgoarm1340:gccgoarm1410:gccgoarm1420:gccgoarm1430:gccgoarm1510 +group.gccgoarm.compilers=gccgoarm1220:gccgoarm1230:gccgoarm1240:gccgoarm1250:gccgoarm1310:gccgoarm1320:gccgoarm1330:gccgoarm1340:gccgoarm1410:gccgoarm1420:gccgoarm1430:gccgoarm1510:gccgoarm1520 group.gccgoarm.groupName=ARM GCCGO group.gccgoarm.baseName=ARM gccgo group.gccgoarm.isSemVer=true @@ -1269,9 +1317,14 @@ compiler.gccgoarm1510.semver=15.1.0 compiler.gccgoarm1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.gccgoarm1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.gccgoarm1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gccgo +compiler.gccgoarm1520.semver=15.2.0 +compiler.gccgoarm1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.gccgoarm1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + ############################### # GCC for PPC -group.gccgoppc.compilers=gccgoppc1220:gccgoppc1230:gccgoppc1240:gccgoppc1250:gccgoppc1310:gccgoppc1320:gccgoppc1330:gccgoppc1340:gccgoppc1410:gccgoppc1420:gccgoppc1430:gccgoppc1510 +group.gccgoppc.compilers=gccgoppc1220:gccgoppc1230:gccgoppc1240:gccgoppc1250:gccgoppc1310:gccgoppc1320:gccgoppc1330:gccgoppc1340:gccgoppc1410:gccgoppc1420:gccgoppc1430:gccgoppc1510:gccgoppc1520 group.gccgoppc.groupName=POWER GCCGO group.gccgoppc.baseName=POWER gccgo group.gccgoppc.isSemVer=true @@ -1336,9 +1389,14 @@ compiler.gccgoppc1510.semver=15.1.0 compiler.gccgoppc1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.gccgoppc1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt +compiler.gccgoppc1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gccgo +compiler.gccgoppc1520.semver=15.2.0 +compiler.gccgoppc1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.gccgoppc1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + ############################### # GCC for PPC64LE -group.gccgoppc64le.compilers=gccgoppc64le1220:gccgoppc64le1230:gppc64leg9:gppc64leg8:gccgoppc64le1310:gccgoppc64le1320:gccgoppc64letrunk:gccgoppc64le1410:gccgoppc64le1330:gccgoppc64le1240:gccgoppc64le1420:gccgoppc64le1510:gccgoppc64le1430:gccgoppc64le1340:gccgoppc64le1250 +group.gccgoppc64le.compilers=gccgoppc64le1220:gccgoppc64le1230:gppc64leg9:gppc64leg8:gccgoppc64le1310:gccgoppc64le1320:gccgoppc64letrunk:gccgoppc64le1410:gccgoppc64le1330:gccgoppc64le1240:gccgoppc64le1420:gccgoppc64le1510:gccgoppc64le1430:gccgoppc64le1340:gccgoppc64le1250:gccgoppc64le1520 group.gccgoppc64le.groupName=POWER64LE GCCGO group.gccgoppc64le.baseName=POWER64LE gccgo group.gccgoppc64le.isSemVer=true @@ -1403,6 +1461,11 @@ compiler.gccgoppc64le1510.semver=15.1.0 compiler.gccgoppc64le1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.gccgoppc64le1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.gccgoppc64le1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gccgo +compiler.gccgoppc64le1520.semver=15.2.0 +compiler.gccgoppc64le1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.gccgoppc64le1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.gccgoppc64letrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gccgo compiler.gccgoppc64letrunk.semver=trunk compiler.gccgoppc64letrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump @@ -1416,7 +1479,7 @@ compiler.gppc64leg8.semver=AT12.0 ############################### # GCC for PPC64 -group.gccgoppc64.compilers=gppc64g8:gppc64g9:gccgoppc64trunk:gccgoppc641220:gccgoppc641230:gccgoppc641240:gccgoppc641250:gccgoppc641310:gccgoppc641320:gccgoppc641330:gccgoppc641340:gccgoppc641410:gccgoppc641420:gccgoppc641430:gccgoppc641510 +group.gccgoppc64.compilers=gppc64g8:gppc64g9:gccgoppc64trunk:gccgoppc641220:gccgoppc641230:gccgoppc641240:gccgoppc641250:gccgoppc641310:gccgoppc641320:gccgoppc641330:gccgoppc641340:gccgoppc641410:gccgoppc641420:gccgoppc641430:gccgoppc641510:gccgoppc641520 group.gccgoppc64.groupName=POWER64 GCCGO group.gccgoppc64.baseName=POWER64 gccgo group.gccgoppc64.isSemVer=true @@ -1481,6 +1544,11 @@ compiler.gccgoppc641510.semver=15.1.0 compiler.gccgoppc641510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.gccgoppc641510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.gccgoppc641520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gccgo +compiler.gccgoppc641520.semver=15.2.0 +compiler.gccgoppc641520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.gccgoppc641520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.gccgoppc64trunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gccgo compiler.gccgoppc64trunk.semver=trunk compiler.gccgoppc64trunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump diff --git a/etc/config/modula2.amazon.properties b/etc/config/modula2.amazon.properties index 9ff1458ad..3fbe4e24a 100644 --- a/etc/config/modula2.amazon.properties +++ b/etc/config/modula2.amazon.properties @@ -1,6 +1,6 @@ # Default settings for modula2 compilers=&gm2 -defaultCompiler=gm2151 +defaultCompiler=gm2152 demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump @@ -15,7 +15,7 @@ needsMulti=false externalparser=CEAsmParser externalparser.exe=/usr/local/bin/asm-parser -group.gm2.compilers=&gm2assert:gm2131:gm2132:gm2133:gm2134:gm2141:gm2142:gm2143:gm2151:gm2snapshot +group.gm2.compilers=&gm2assert:gm2131:gm2132:gm2133:gm2134:gm2141:gm2142:gm2143:gm2151:gm2152:gm2snapshot group.gm2.compilerType=gm2 group.gm2.instructionSet=amd64 group.gm2.isSemVer=true @@ -38,12 +38,14 @@ compiler.gm2143.exe=/opt/compiler-explorer/gcc-14.3.0/bin/gm2 compiler.gm2143.semver=14.3 compiler.gm2151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gm2 compiler.gm2151.semver=15.1 +compiler.gm2152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gm2 +compiler.gm2152.semver=15.2 compiler.gm2snapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/gm2 compiler.gm2snapshot.semver=(snapshot) ## GFORTRAN x86 build with "assertions" (--enable-checking=XXX) -group.gm2assert.compilers=gm2131assert:gm2132assert:gm2133assert:gm2134assert:gm2141assert:gm2142assert:gm2143assert:gm2151assert +group.gm2assert.compilers=gm2131assert:gm2132assert:gm2133assert:gm2134assert:gm2141assert:gm2142assert:gm2143assert:gm2151assert:gm2152assert group.gm2assert.groupName=GM2 x86-64 (assertions) compiler.gm2131assert.exe=/opt/compiler-explorer/gcc-assertions-13.1.0/bin/gm2 @@ -62,3 +64,5 @@ compiler.gm2143assert.exe=/opt/compiler-explorer/gcc-assertions-14.3.0/bin/gm2 compiler.gm2143assert.semver=14.3 (assertions) compiler.gm2151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gm2 compiler.gm2151assert.semver=15.1 (assertions) +compiler.gm2152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gm2 +compiler.gm2152assert.semver=15.2 (assertions) diff --git a/etc/config/objc++.amazon.properties b/etc/config/objc++.amazon.properties index 26a34ff50..8d2318d48 100644 --- a/etc/config/objc++.amazon.properties +++ b/etc/config/objc++.amazon.properties @@ -1,7 +1,7 @@ compilers=&objcppgcc86:&objcppcross -defaultCompiler=objcppg151 -demangler=/opt/compiler-explorer/gcc-15.1.0/bin/c++filt -objdumper=/opt/compiler-explorer/gcc-15.1.0/bin/objdump +defaultCompiler=objcppg152 +demangler=/opt/compiler-explorer/gcc-15.2.0/bin/c++filt +objdumper=/opt/compiler-explorer/gcc-15.2.0/bin/objdump needsMulti=false buildenvsetup=ceconan @@ -14,7 +14,7 @@ llvmDisassembler=/opt/compiler-explorer/clang-18.1.0/bin/llvm-dis ############################### # GCC for x86 -group.objcppgcc86.compilers=&objcppgcc86assert:objcppg105:objcppg114:objcppg122:objcppg123:objcppg124:objcppg125:objcppg131:objcppg132:objcppg133:objcppg134:objcppg141:objcppg142:objcppg143:objcppg151:objcppgsnapshot +group.objcppgcc86.compilers=&objcppgcc86assert:objcppg105:objcppg114:objcppg122:objcppg123:objcppg124:objcppg125:objcppg131:objcppg132:objcppg133:objcppg134:objcppg141:objcppg142:objcppg143:objcppg151:objcppg152:objcppgsnapshot group.objcppgcc86.groupName=GCC x86-64 group.objcppgcc86.instructionSet=amd64 group.objcppgcc86.baseName=x86-64 gcc @@ -68,6 +68,9 @@ compiler.objcppg143.semver=14.3 compiler.objcppg151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/g++ compiler.objcppg151.semver=15.1 +compiler.objcppg152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/g++ +compiler.objcppg152.semver=15.2 + compiler.objcppgsnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/g++ compiler.objcppgsnapshot.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt compiler.objcppgsnapshot.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump @@ -76,7 +79,7 @@ compiler.objcppgsnapshot.isNightly=true ## OBJC++ GCC x86 build with "assertions" (--enable-checking=XXX) group.objcppgcc86assert.groupName=GCC x86-64 (assertions) -group.objcppgcc86assert.compilers=objcppg105assert:objcppg114assert:objcppg122assert:objcppg123assert:objcppg124assert:objcppg125assert:objcppg131assert:objcppg132assert:objcppg133assert:objcppg134assert:objcppg141assert:objcppg142assert:objcppg143assert:objcppg151assert +group.objcppgcc86assert.compilers=objcppg105assert:objcppg114assert:objcppg122assert:objcppg123assert:objcppg124assert:objcppg125assert:objcppg131assert:objcppg132assert:objcppg133assert:objcppg134assert:objcppg141assert:objcppg142assert:objcppg143assert:objcppg151assert:objcppg152assert compiler.objcppg105assert.exe=/opt/compiler-explorer/gcc-assertions-10.5.0/bin/g++ compiler.objcppg105assert.semver=10.5 (assertions) @@ -120,6 +123,9 @@ compiler.objcppg143assert.semver=14.3 (assertions) compiler.objcppg151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/g++ compiler.objcppg151assert.semver=15.1 (assertions) +compiler.objcppg152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/g++ +compiler.objcppg152assert.semver=15.2 (assertions) + group.objcppcross.compilers=&objcppgccs group.objcppgccs.compilers=&objcppgccloongarch64:&objcppgccrvs:&objcppgccarm:&objcppgccarm64:&objcppgccmips:&objcppgccmips64:&objcppgccmipsel:&objcppgccmips64el:&objcppgccpowerpc:&objcppgccpowerpc64:&objcppgccpowerpc64le:&objcppgccs390x:&objcppgcchppa @@ -130,7 +136,7 @@ group.objcppgccs.supportsBinaryObject=true ############################### # GCC for HPPA -group.objcppgcchppa.compilers=objcpphppag1420:objcpphppag1430:objcpphppag1510 +group.objcppgcchppa.compilers=objcpphppag1420:objcpphppag1430:objcpphppag1510:objcpphppag1520 group.objcppgcchppa.groupName=HPPA GCC group.objcppgcchppa.baseName=HPPA gcc group.objcppgcchppa.isSemVer=true @@ -152,9 +158,14 @@ compiler.objcpphppag1510.semver=15.1.0 compiler.objcpphppag1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.objcpphppag1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.objcpphppag1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-g++ +compiler.objcpphppag1520.semver=15.2.0 +compiler.objcpphppag1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.objcpphppag1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + ############################### # GCC for Loongarch64 -group.objcppgccloongarch64.compilers=objcpploongarch64g1410:objcpploongarch64g1420:objcpploongarch64g1510:objcpploongarch64g1430 +group.objcppgccloongarch64.compilers=objcpploongarch64g1410:objcpploongarch64g1420:objcpploongarch64g1510:objcpploongarch64g1430:objcpploongarch64g1520 group.objcppgccloongarch64.groupName=LOONGARCH64 GCC compiler.objcpploongarch64g1410.exe=/opt/compiler-explorer/loongarch64/gcc-14.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-g++ @@ -177,9 +188,14 @@ compiler.objcpploongarch64g1510.semver=15.1.0 compiler.objcpploongarch64g1510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.objcpploongarch64g1510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.objcpploongarch64g1520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-g++ +compiler.objcpploongarch64g1520.semver=15.2.0 +compiler.objcpploongarch64g1520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.objcpploongarch64g1520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ############################### # GCC for POWERPC64LE -group.objcppgccpowerpc64le.compilers=objcppppc64leg1230:objcppppc64leg1310:objcppppc64leg1320:objcppppc64legtrunk:objcppppc64leg1410:objcppppc64leg1330:objcppppc64leg1240:objcppppc64leg1420:objcppppc64leg1510:objcppppc64leg1430:objcppppc64leg1340:objcppppc64leg1250 +group.objcppgccpowerpc64le.compilers=objcppppc64leg1230:objcppppc64leg1310:objcppppc64leg1320:objcppppc64legtrunk:objcppppc64leg1410:objcppppc64leg1330:objcppppc64leg1240:objcppppc64leg1420:objcppppc64leg1510:objcppppc64leg1430:objcppppc64leg1340:objcppppc64leg1250:objcppppc64leg1520 group.objcppgccpowerpc64le.groupName=POWERPC64LE GCC group.objcppgccpowerpc64le.baseName=POWERPC64LE GCC group.objcppgccpowerpc64le.instructionSet=powerpc @@ -239,6 +255,11 @@ compiler.objcppppc64leg1510.semver=15.1.0 compiler.objcppppc64leg1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.objcppppc64leg1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.objcppppc64leg1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-g++ +compiler.objcppppc64leg1520.semver=15.2.0 +compiler.objcppppc64leg1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.objcppppc64leg1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.objcppppc64legtrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-g++ compiler.objcppppc64legtrunk.semver=trunk compiler.objcppppc64legtrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump @@ -246,7 +267,7 @@ compiler.objcppppc64legtrunk.demangler=/opt/compiler-explorer/powerpc64le/gcc-tr ############################### # GCC for POWERPC64 -group.objcppgccpowerpc64.compilers=objcppppc64g1230:objcppppc64g1310:objcppppc64g1320:objcppppc64gtrunk:objcppppc64g1410:objcppppc64g1330:objcppppc64g1240:objcppppc64g1420:objcppppc64g1510:objcppppc64g1430:objcppppc64g1340:objcppppc64g1250 +group.objcppgccpowerpc64.compilers=objcppppc64g1230:objcppppc64g1310:objcppppc64g1320:objcppppc64gtrunk:objcppppc64g1410:objcppppc64g1330:objcppppc64g1240:objcppppc64g1420:objcppppc64g1510:objcppppc64g1430:objcppppc64g1340:objcppppc64g1250:objcppppc64g1520 group.objcppgccpowerpc64.groupName=POWERPC64 GCC group.objcppgccpowerpc64.baseName=POWERPC64 GCC group.objcppgccpowerpc64.instructionSet=powerpc @@ -306,6 +327,11 @@ compiler.objcppppc64g1510.semver=15.1.0 compiler.objcppppc64g1510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.objcppppc64g1510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.objcppppc64g1520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-g++ +compiler.objcppppc64g1520.semver=15.2.0 +compiler.objcppppc64g1520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.objcppppc64g1520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.objcppppc64gtrunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-g++ compiler.objcppppc64gtrunk.semver=trunk compiler.objcppppc64gtrunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump @@ -313,7 +339,7 @@ compiler.objcppppc64gtrunk.demangler=/opt/compiler-explorer/powerpc64/gcc-trunk/ ############################### # GCC for POWERPC -group.objcppgccpowerpc.compilers=objcppppcg1230:objcppppcg1240:objcppppcg1250:objcppppcg1310:objcppppcg1320:objcppppcg1330:objcppppcg1340:objcppppcg1410:objcppppcg1420:objcppppcg1430:objcppppcg1510 +group.objcppgccpowerpc.compilers=objcppppcg1230:objcppppcg1240:objcppppcg1250:objcppppcg1310:objcppppcg1320:objcppppcg1330:objcppppcg1340:objcppppcg1410:objcppppcg1420:objcppppcg1430:objcppppcg1510:objcppppcg1520 group.objcppgccpowerpc.groupName=POWERPC GCC group.objcppgccpowerpc.baseName=POWERPC GCC group.objcppgccpowerpc.instructionSet=powerpc @@ -373,9 +399,14 @@ compiler.objcppppcg1510.semver=15.1.0 compiler.objcppppcg1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.objcppppcg1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt +compiler.objcppppcg1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-g++ +compiler.objcppppcg1520.semver=15.2.0 +compiler.objcppppcg1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.objcppppcg1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + ############################### # GCC for MIPSEL -group.objcppgccmipsel.compilers=objcppmipselg1230:objcppmipselg1240:objcppmipselg1250:objcppmipselg1310:objcppmipselg1320:objcppmipselg1330:objcppmipselg1340:objcppmipselg1410:objcppmipselg1420:objcppmipselg1430:objcppmipselg1510 +group.objcppgccmipsel.compilers=objcppmipselg1230:objcppmipselg1240:objcppmipselg1250:objcppmipselg1310:objcppmipselg1320:objcppmipselg1330:objcppmipselg1340:objcppmipselg1410:objcppmipselg1420:objcppmipselg1430:objcppmipselg1510:objcppmipselg1520 group.objcppgccmipsel.groupName=MIPS (EL) GCC group.objcppgccmipsel.baseName=MIPS (EL) GCC @@ -434,9 +465,14 @@ compiler.objcppmipselg1510.semver=15.1.0 compiler.objcppmipselg1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.objcppmipselg1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.objcppmipselg1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-g++ +compiler.objcppmipselg1520.semver=15.2.0 +compiler.objcppmipselg1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.objcppmipselg1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ############################### # GCC for MIPS64EL -group.objcppgccmips64el.compilers=objcppmips64elg1230:objcppmips64elg1310:objcppmips64elg1320:objcppmips64elg1410:objcppmips64elg1330:objcppmips64elg1240:objcppmips64elg1420:objcppmips64elg1510:objcppmips64elg1430:objcppmips64elg1340:objcppmips64elg1250 +group.objcppgccmips64el.compilers=objcppmips64elg1230:objcppmips64elg1310:objcppmips64elg1320:objcppmips64elg1410:objcppmips64elg1330:objcppmips64elg1240:objcppmips64elg1420:objcppmips64elg1510:objcppmips64elg1430:objcppmips64elg1340:objcppmips64elg1250:objcppmips64elg1520 group.objcppgccmips64el.groupName=MIPS64 (EL) GCC group.objcppgccmips64el.baseName=MIPS64 (EL) GCC @@ -495,9 +531,14 @@ compiler.objcppmips64elg1510.semver=15.1.0 compiler.objcppmips64elg1510.objdumper=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump compiler.objcppmips64elg1510.demangler=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt +compiler.objcppmips64elg1520.exe=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-g++ +compiler.objcppmips64elg1520.semver=15.2.0 +compiler.objcppmips64elg1520.objdumper=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump +compiler.objcppmips64elg1520.demangler=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt + ############################### # GCC for MIPS64 -group.objcppgccmips64.compilers=objcppmips64g1230:objcppmips64g1310:objcppmips64g1320:objcppmips64g1410:objcppmips64g1330:objcppmips64g1240:objcppmips64g1420:objcppmips64g1510:objcppmips64g1430:objcppmips64g1340:objcppmips64g1250 +group.objcppgccmips64.compilers=objcppmips64g1230:objcppmips64g1310:objcppmips64g1320:objcppmips64g1410:objcppmips64g1330:objcppmips64g1240:objcppmips64g1420:objcppmips64g1510:objcppmips64g1430:objcppmips64g1340:objcppmips64g1250:objcppmips64g1520 group.objcppgccmips64.groupName=MIPS64 GCC group.objcppgccmips64.baseName=MIPS64 GCC @@ -556,10 +597,15 @@ compiler.objcppmips64g1510.semver=15.1.0 compiler.objcppmips64g1510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.objcppmips64g1510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.objcppmips64g1520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-g++ +compiler.objcppmips64g1520.semver=15.2.0 +compiler.objcppmips64g1520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.objcppmips64g1520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ############################### # GCC for MIPS -group.objcppgccmips.compilers=objcppmipsg1230:objcppmipsg1240:objcppmipsg1250:objcppmipsg1310:objcppmipsg1320:objcppmipsg1330:objcppmipsg1340:objcppmipsg1410:objcppmipsg1420:objcppmipsg1430:objcppmipsg1510 +group.objcppgccmips.compilers=objcppmipsg1230:objcppmipsg1240:objcppmipsg1250:objcppmipsg1310:objcppmipsg1320:objcppmipsg1330:objcppmipsg1340:objcppmipsg1410:objcppmipsg1420:objcppmipsg1430:objcppmipsg1510:objcppmipsg1520 group.objcppgccmips.groupName=MIPS GCC group.objcppgccmips.baseName=MIPS GCC @@ -618,9 +664,14 @@ compiler.objcppmipsg1510.semver=15.1.0 compiler.objcppmipsg1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.objcppmipsg1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.objcppmipsg1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-g++ +compiler.objcppmipsg1520.semver=15.2.0 +compiler.objcppmipsg1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.objcppmipsg1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ############################### # GCC for s390 -group.objcppgccs390x.compilers=objcpps390xg1230:objcpps390xg1310:objcpps390xg1320:objcpps390xg1410:objcpps390xg1330:objcpps390xg1240:objcpps390xg1420:objcpps390xg1510:objcpps390xg1430:objcpps390xg1340:objcpps390xg1250 +group.objcppgccs390x.compilers=objcpps390xg1230:objcpps390xg1310:objcpps390xg1320:objcpps390xg1410:objcpps390xg1330:objcpps390xg1240:objcpps390xg1420:objcpps390xg1510:objcpps390xg1430:objcpps390xg1340:objcpps390xg1250:objcpps390xg1520 group.objcppgccs390x.groupName=S390X GCC group.objcppgccs390x.baseName=S390X GCC @@ -679,9 +730,14 @@ compiler.objcpps390xg1510.semver=15.1.0 compiler.objcpps390xg1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.objcpps390xg1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.objcpps390xg1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-g++ +compiler.objcpps390xg1520.semver=15.2.0 +compiler.objcpps390xg1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.objcpps390xg1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ############################### # GCC for ARM -group.objcppgccarm.compilers=objcpparmg1230:objcpparmg1240:objcpparmg1250:objcpparmg1310:objcpparmg1320:objcpparmg1330:objcpparmg1340:objcpparmg1410:objcpparmg1420:objcpparmg1430:objcpparmg1510 +group.objcppgccarm.compilers=objcpparmg1230:objcpparmg1240:objcpparmg1250:objcpparmg1310:objcpparmg1320:objcpparmg1330:objcpparmg1340:objcpparmg1410:objcpparmg1420:objcpparmg1430:objcpparmg1510:objcpparmg1520 group.objcppgccarm.groupName=ARM GCC group.objcppgccarm.baseName=ARM GCC @@ -740,10 +796,15 @@ compiler.objcpparmg1510.semver=15.1.0 compiler.objcpparmg1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.objcpparmg1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.objcpparmg1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-g++ +compiler.objcpparmg1520.semver=15.2.0 +compiler.objcpparmg1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.objcpparmg1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + ############################### # GCC for ARM64 -group.objcppgccarm64.compilers=objcpparm64g1230:objcpparm64g1310:objcpparm64g1320:objcpparm64g1410:objcpparm64g1330:objcpparm64g1240:objcpparm64g1420:objcpparm64g1510:objcpparm64g1430:objcpparm64g1340:objcpparm64g1250 +group.objcppgccarm64.compilers=objcpparm64g1230:objcpparm64g1310:objcpparm64g1320:objcpparm64g1410:objcpparm64g1330:objcpparm64g1240:objcpparm64g1420:objcpparm64g1510:objcpparm64g1430:objcpparm64g1340:objcpparm64g1250:objcpparm64g1520 group.objcppgccarm64.groupName=ARM64 GCC group.objcppgccarm64.baseName=ARM64 GCC @@ -802,6 +863,11 @@ compiler.objcpparm64g1510.semver=15.1.0 compiler.objcpparm64g1510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.objcpparm64g1510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.objcpparm64g1520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-g++ +compiler.objcpparm64g1520.semver=15.2.0 +compiler.objcpparm64g1520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.objcpparm64g1520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + ############################### # GCC for RISC-V @@ -809,7 +875,7 @@ group.objcppgccrvs.compilers=&objcppgccrv32:&objcppgccrv64 group.objcppgccrvs.groupName=RISC-V GCC ## Subgroup for riscv32 -group.objcppgccrv32.compilers=objcppgccrv32trunk:objcppgccrv321230:objcppgccrv321240:objcppgccrv321250:objcppgccrv321310:objcppgccrv321320:objcppgccrv321330:objcppgccrv321340:objcppgccrv321410:objcppgccrv321420:objcppgccrv321430:objcppgccrv321510 +group.objcppgccrv32.compilers=objcppgccrv32trunk:objcppgccrv321230:objcppgccrv321240:objcppgccrv321250:objcppgccrv321310:objcppgccrv321320:objcppgccrv321330:objcppgccrv321340:objcppgccrv321410:objcppgccrv321420:objcppgccrv321430:objcppgccrv321510:objcppgccrv321520 group.objcppgccrv32.groupName=RISC-V 32-bits group.objcppgccrv32.baseName=RISC-V 32 GCC @@ -868,6 +934,11 @@ compiler.objcppgccrv321510.semver=15.1.0 compiler.objcppgccrv321510.objdumper=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.objcppgccrv321510.demangler=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt +compiler.objcppgccrv321520.exe=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-g++ +compiler.objcppgccrv321520.semver=15.2.0 +compiler.objcppgccrv321520.objdumper=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump +compiler.objcppgccrv321520.demangler=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt + compiler.objcppgccrv32trunk.exe=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-g++ compiler.objcppgccrv32trunk.semver=(trunk) compiler.objcppgccrv32trunk.demangler=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt @@ -875,7 +946,7 @@ compiler.objcppgccrv32trunk.objdumper=/opt/compiler-explorer/riscv32/gcc-trunk/r compiler.objcppgccrv32trunk.isNightly=true ## Subgroup for riscv64 -group.objcppgccrv64.compilers=objcppgccrv64trunk:objcppgccrv641230:objcppgccrv641240:objcppgccrv641250:objcppgccrv641310:objcppgccrv641320:objcppgccrv641330:objcppgccrv641340:objcppgccrv641410:objcppgccrv641420:objcppgccrv641430:objcppgccrv641510 +group.objcppgccrv64.compilers=objcppgccrv64trunk:objcppgccrv641230:objcppgccrv641240:objcppgccrv641250:objcppgccrv641310:objcppgccrv641320:objcppgccrv641330:objcppgccrv641340:objcppgccrv641410:objcppgccrv641420:objcppgccrv641430:objcppgccrv641510:objcppgccrv641520 group.objcppgccrv64.groupName=RISC-V 64-bits group.objcppgccrv64.baseName=RISC-V 64 GCC @@ -934,6 +1005,11 @@ compiler.objcppgccrv641510.semver=15.1.0 compiler.objcppgccrv641510.objdumper=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump compiler.objcppgccrv641510.demangler=/opt/compiler-explorer/riscv64/gcc-15.1.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt +compiler.objcppgccrv641520.exe=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-g++ +compiler.objcppgccrv641520.semver=15.2.0 +compiler.objcppgccrv641520.objdumper=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-objdump +compiler.objcppgccrv641520.demangler=/opt/compiler-explorer/riscv64/gcc-15.2.0/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt + compiler.objcppgccrv64trunk.exe=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-g++ compiler.objcppgccrv64trunk.semver=(trunk) compiler.objcppgccrv64trunk.demangler=/opt/compiler-explorer/riscv64/gcc-trunk/riscv64-unknown-linux-gnu/bin/riscv64-unknown-linux-gnu-c++filt diff --git a/etc/config/objc.amazon.properties b/etc/config/objc.amazon.properties index b49a53e81..ba0c3111b 100644 --- a/etc/config/objc.amazon.properties +++ b/etc/config/objc.amazon.properties @@ -1,7 +1,7 @@ compilers=&objcgcc86:&objccross -defaultCompiler=objcg151 -demangler=/opt/compiler-explorer/gcc-15.1.0/bin/c++filt -objdumper=/opt/compiler-explorer/gcc-15.1.0/bin/objdump +defaultCompiler=objcg152 +demangler=/opt/compiler-explorer/gcc-15.2.0/bin/c++filt +objdumper=/opt/compiler-explorer/gcc-15.2.0/bin/objdump needsMulti=false externalparser=CEAsmParser @@ -9,7 +9,7 @@ externalparser.exe=/usr/local/bin/asm-parser ############################### # GCC for x86 -group.objcgcc86.compilers=&objcgcc86assert:objcg346:objcg404:objcg650:objcg105:objcg114:objcg122:objcg123:objcg124:objcg125:objcg131:objcg132:objcg133:objcg134:objcg141:objcg142:objcg143:objcg151:objcgsnapshot +group.objcgcc86.compilers=&objcgcc86assert:objcg346:objcg404:objcg650:objcg105:objcg114:objcg122:objcg123:objcg124:objcg125:objcg131:objcg132:objcg133:objcg134:objcg141:objcg142:objcg143:objcg151:objcg152:objcgsnapshot group.objcgcc86.groupName=GCC x86-64 group.objcgcc86.instructionSet=amd64 group.objcgcc86.isSemVer=true @@ -70,6 +70,9 @@ compiler.objcg143.semver=14.3 compiler.objcg151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gcc compiler.objcg151.semver=15.1 +compiler.objcg152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gcc +compiler.objcg152.semver=15.2 + compiler.objcgsnapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/gcc compiler.objcgsnapshot.demangler=/opt/compiler-explorer/gcc-snapshot/bin/c++filt compiler.objcgsnapshot.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump @@ -77,7 +80,7 @@ compiler.objcgsnapshot.semver=(trunk) compiler.objcgsnapshot.isNightly=true ## OBJC GCC x86 build with "assertions" (--enable-checking=XXX) -group.objcgcc86assert.compilers=objcg105assert:objcg114assert:objcg122assert:objcg123assert:objcg124assert:objcg125assert:objcg131assert:objcg132assert:objcg133assert:objcg134assert:objcg141assert:objcg142assert:objcg143assert:objcg151assert +group.objcgcc86assert.compilers=objcg105assert:objcg114assert:objcg122assert:objcg123assert:objcg124assert:objcg125assert:objcg131assert:objcg132assert:objcg133assert:objcg134assert:objcg141assert:objcg142assert:objcg143assert:objcg151assert:objcg152assert group.objcgcc86assert.groupName=GCC x86-64 (assertions) compiler.objcg105assert.exe=/opt/compiler-explorer/gcc-assertions-10.5.0/bin/gcc @@ -122,6 +125,9 @@ compiler.objcg143assert.semver=14.3 (assertions) compiler.objcg151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gcc compiler.objcg151assert.semver=15.1 (assertions) +compiler.objcg152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gcc +compiler.objcg152assert.semver=15.2 (assertions) + ############################### # Cross Compilers group.objccross.compilers=&objcppcs:&objcmipss:&objcgccarm:&objcrv:&objcs390x:&objcloongarch64:&objcsparc:&objcsparc64:&objcsparcleon:&objcvax:&objchppa @@ -137,7 +143,7 @@ group.objccross.licensePreamble=Copyright (c) 2007 Free Software Foundation, Inc group.objcsparc.compilers=&objcgccsparc # GCC for SPARC -group.objcgccsparc.compilers=objcsparcg1220:objcsparcg1230:objcsparcg1240:objcsparcg1250:objcsparcg1310:objcsparcg1320:objcsparcg1330:objcsparcg1340:objcsparcg1410:objcsparcg1420:objcsparcg1430:objcsparcg1510 +group.objcgccsparc.compilers=objcsparcg1220:objcsparcg1230:objcsparcg1240:objcsparcg1250:objcsparcg1310:objcsparcg1320:objcsparcg1330:objcsparcg1340:objcsparcg1410:objcsparcg1420:objcsparcg1430:objcsparcg1510:objcsparcg1520 group.objcgccsparc.supportsBinary=true group.objcgccsparc.supportsExecute=false group.objcgccsparc.baseName=SPARC gcc @@ -204,12 +210,17 @@ compiler.objcsparcg1510.semver=15.1.0 compiler.objcsparcg1510.objdumper=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump compiler.objcsparcg1510.demangler=/opt/compiler-explorer/sparc/gcc-15.1.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt +compiler.objcsparcg1520.exe=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-gcc +compiler.objcsparcg1520.semver=15.2.0 +compiler.objcsparcg1520.objdumper=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-objdump +compiler.objcsparcg1520.demangler=/opt/compiler-explorer/sparc/gcc-15.2.0/sparc-unknown-linux-gnu/bin/sparc-unknown-linux-gnu-c++filt + ############################### # Cross for SPARC64 group.objcsparc64.compilers=&objcgccsparc64 # GCC for SPARC64 -group.objcgccsparc64.compilers=objcsparc64g1220:objcsparc64g1230:objcsparc64g1310:objcsparc64g1320:objcsparc64g1410:objcsparc64g1330:objcsparc64g1240:objcsparc64g1420:objcsparc64g1510:objcsparc64g1430:objcsparc64g1340:objcsparc64g1250 +group.objcgccsparc64.compilers=objcsparc64g1220:objcsparc64g1230:objcsparc64g1310:objcsparc64g1320:objcsparc64g1410:objcsparc64g1330:objcsparc64g1240:objcsparc64g1420:objcsparc64g1510:objcsparc64g1430:objcsparc64g1340:objcsparc64g1250:objcsparc64g1520 group.objcgccsparc64.supportsBinary=true group.objcgccsparc64.supportsExecute=false group.objcgccsparc64.baseName=SPARC64 gcc @@ -276,12 +287,17 @@ compiler.objcsparc64g1510.semver=15.1.0 compiler.objcsparc64g1510.objdumper=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump compiler.objcsparc64g1510.demangler=/opt/compiler-explorer/sparc64/gcc-15.1.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt +compiler.objcsparc64g1520.exe=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-gcc +compiler.objcsparc64g1520.semver=15.2.0 +compiler.objcsparc64g1520.objdumper=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-objdump +compiler.objcsparc64g1520.demangler=/opt/compiler-explorer/sparc64/gcc-15.2.0/sparc64-multilib-linux-gnu/bin/sparc64-multilib-linux-gnu-c++filt + ############################### # Cross for SPARC-LEON group.objcsparcleon.compilers=&objcgccsparcleon # GCC for SPARC-LEON -group.objcgccsparcleon.compilers=objcsparcleong1220:objcsparcleong1220-1:objcsparcleong1230:objcsparcleong1240:objcsparcleong1250:objcsparcleong1310:objcsparcleong1320:objcsparcleong1330:objcsparcleong1340:objcsparcleong1410:objcsparcleong1420:objcsparcleong1430:objcsparcleong1510 +group.objcgccsparcleon.compilers=objcsparcleong1220:objcsparcleong1220-1:objcsparcleong1230:objcsparcleong1240:objcsparcleong1250:objcsparcleong1310:objcsparcleong1320:objcsparcleong1330:objcsparcleong1340:objcsparcleong1410:objcsparcleong1420:objcsparcleong1430:objcsparcleong1510:objcsparcleong1520 group.objcgccsparcleon.supportsBinary=true group.objcgccsparcleon.supportsExecute=false group.objcgccsparcleon.baseName=SPARC LEON gcc @@ -350,6 +366,11 @@ compiler.objcsparcleong1510.semver=15.1.0 compiler.objcsparcleong1510.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump compiler.objcsparcleong1510.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.1.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt +compiler.objcsparcleong1520.exe=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-gcc +compiler.objcsparcleong1520.semver=15.2.0 +compiler.objcsparcleong1520.objdumper=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump +compiler.objcsparcleong1520.demangler=/opt/compiler-explorer/sparc-leon/gcc-15.2.0/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-c++filt + compiler.objcsparcleong1220-1.exe=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-gcc compiler.objcsparcleong1220-1.semver=12.2.0 compiler.objcsparcleong1220-1.objdumper=/opt/compiler-explorer/sparc-leon/gcc-12.2.0-1/sparc-leon-linux-uclibc/bin/sparc-leon-linux-uclibc-objdump @@ -360,7 +381,7 @@ compiler.objcsparcleong1220-1.demangler=/opt/compiler-explorer/sparc-leon/gcc-12 group.objcloongarch64.compilers=&objcgccloongarch64 # GCC for loongarch64 -group.objcgccloongarch64.compilers=objcloongarch64g1220:objcloongarch64g1230:objcloongarch64g1310:objcloongarch64g1320:objcloongarch64g1410:objcloongarch64g1330:objcloongarch64g1240:objcloongarch64g1420:objcloongarch64g1510:objcloongarch64g1430:objcloongarch64g1340:objcloongarch64g1250 +group.objcgccloongarch64.compilers=objcloongarch64g1220:objcloongarch64g1230:objcloongarch64g1310:objcloongarch64g1320:objcloongarch64g1410:objcloongarch64g1330:objcloongarch64g1240:objcloongarch64g1420:objcloongarch64g1510:objcloongarch64g1430:objcloongarch64g1340:objcloongarch64g1250:objcloongarch64g1520 group.objcgccloongarch64.supportsBinary=true group.objcgccloongarch64.supportsExecute=false group.objcgccloongarch64.baseName=loongarch64 gcc @@ -427,13 +448,18 @@ compiler.objcloongarch64g1510.semver=15.1.0 compiler.objcloongarch64g1510.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump compiler.objcloongarch64g1510.demangler=/opt/compiler-explorer/loongarch64/gcc-15.1.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt +compiler.objcloongarch64g1520.exe=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-gcc +compiler.objcloongarch64g1520.semver=15.2.0 +compiler.objcloongarch64g1520.objdumper=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-objdump +compiler.objcloongarch64g1520.demangler=/opt/compiler-explorer/loongarch64/gcc-15.2.0/loongarch64-unknown-linux-gnu/bin/loongarch64-unknown-linux-gnu-c++filt + ############################### # Cross for s390x group.objcs390x.compilers=&objcgccs390x # GCC for s390x -group.objcgccs390x.compilers=objcs390xg1220:objcs390xg1230:objcs390xg1310:objcs390xg1320:objcs390xg1410:objcs390xg1330:objcs390xg1240:objcs390xg1420:objcs390xg1510:objcs390xg1430:objcs390xg1340:objcs390xg1250 +group.objcgccs390x.compilers=objcs390xg1220:objcs390xg1230:objcs390xg1310:objcs390xg1320:objcs390xg1410:objcs390xg1330:objcs390xg1240:objcs390xg1420:objcs390xg1510:objcs390xg1430:objcs390xg1340:objcs390xg1250:objcs390xg1520 group.objcgccs390x.supportsBinary=true group.objcgccs390x.supportsExecute=false group.objcgccs390x.baseName=s390x gcc @@ -500,6 +526,11 @@ compiler.objcs390xg1510.semver=15.1.0 compiler.objcs390xg1510.objdumper=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump compiler.objcs390xg1510.demangler=/opt/compiler-explorer/s390x/gcc-15.1.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt +compiler.objcs390xg1520.exe=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-gcc +compiler.objcs390xg1520.semver=15.2.0 +compiler.objcs390xg1520.objdumper=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-objdump +compiler.objcs390xg1520.demangler=/opt/compiler-explorer/s390x/gcc-15.2.0/s390x-ibm-linux-gnu/bin/s390x-ibm-linux-gnu-c++filt + ############################### # Cross compilers for PPC group.objcppcs.compilers=&objcppc:&objcppc64:&objcppc64le @@ -508,7 +539,7 @@ group.objcppcs.supportsBinary=true group.objcppcs.supportsExecute=false group.objcppcs.instructionSet=powerpc -group.objcppc.compilers=objcppcg1220:objcppcg1230:objcppcg1240:objcppcg1250:objcppcg1310:objcppcg1320:objcppcg1330:objcppcg1340:objcppcg1410:objcppcg1420:objcppcg1430:objcppcg1510 +group.objcppc.compilers=objcppcg1220:objcppcg1230:objcppcg1240:objcppcg1250:objcppcg1310:objcppcg1320:objcppcg1330:objcppcg1340:objcppcg1410:objcppcg1420:objcppcg1430:objcppcg1510:objcppcg1520 group.objcppc.groupName=POWER group.objcppc.baseName=POWER GCC @@ -572,7 +603,12 @@ compiler.objcppcg1510.semver=15.1.0 compiler.objcppcg1510.objdumper=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump compiler.objcppcg1510.demangler=/opt/compiler-explorer/powerpc/gcc-15.1.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt -group.objcppc64.compilers=objcppc64g1220:objcppc64g1230:objcppc64g1310:objcppc64g1320:objcppc64gtrunk:objcppc64g1410:objcppc64g1330:objcppc64g1240:objcppc64g1420:objcppc64g1510:objcppc64g1430:objcppc64g1340:objcppc64g1250 +compiler.objcppcg1520.exe=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-gcc +compiler.objcppcg1520.semver=15.2.0 +compiler.objcppcg1520.objdumper=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-objdump +compiler.objcppcg1520.demangler=/opt/compiler-explorer/powerpc/gcc-15.2.0/powerpc-unknown-linux-gnu/bin/powerpc-unknown-linux-gnu-c++filt + +group.objcppc64.compilers=objcppc64g1220:objcppc64g1230:objcppc64g1310:objcppc64g1320:objcppc64gtrunk:objcppc64g1410:objcppc64g1330:objcppc64g1240:objcppc64g1420:objcppc64g1510:objcppc64g1430:objcppc64g1340:objcppc64g1250:objcppc64g1520 group.objcppc64.groupName=POWER64 group.objcppc64.baseName=POWER64 GCC @@ -636,12 +672,17 @@ compiler.objcppc64g1510.semver=15.1.0 compiler.objcppc64g1510.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.objcppc64g1510.demangler=/opt/compiler-explorer/powerpc64/gcc-15.1.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt +compiler.objcppc64g1520.exe=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gcc +compiler.objcppc64g1520.semver=15.2.0 +compiler.objcppc64g1520.objdumper=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump +compiler.objcppc64g1520.demangler=/opt/compiler-explorer/powerpc64/gcc-15.2.0/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt + compiler.objcppc64gtrunk.exe=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-gcc compiler.objcppc64gtrunk.semver=trunk compiler.objcppc64gtrunk.objdumper=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-objdump compiler.objcppc64gtrunk.demangler=/opt/compiler-explorer/powerpc64/gcc-trunk/powerpc64-unknown-linux-gnu/bin/powerpc64-unknown-linux-gnu-c++filt -group.objcppc64le.compilers=objcppc64leg1220:objcppc64leg1230:objcppc64leg1310:objcppc64leg1320:objcppc64legtrunk:objcppc64leg1410:objcppc64leg1330:objcppc64leg1240:objcppc64leg1420:objcppc64leg1510:objcppc64leg1430:objcppc64leg1340:objcppc64leg1250 +group.objcppc64le.compilers=objcppc64leg1220:objcppc64leg1230:objcppc64leg1310:objcppc64leg1320:objcppc64legtrunk:objcppc64leg1410:objcppc64leg1330:objcppc64leg1240:objcppc64leg1420:objcppc64leg1510:objcppc64leg1430:objcppc64leg1340:objcppc64leg1250:objcppc64leg1520 group.objcppc64le.groupName=POWER64LE group.objcppc64le.baseName=POWER64LE GCC @@ -705,6 +746,11 @@ compiler.objcppc64leg1510.semver=15.1.0 compiler.objcppc64leg1510.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump compiler.objcppc64leg1510.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.1.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt +compiler.objcppc64leg1520.exe=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gcc +compiler.objcppc64leg1520.semver=15.2.0 +compiler.objcppc64leg1520.objdumper=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump +compiler.objcppc64leg1520.demangler=/opt/compiler-explorer/powerpc64le/gcc-15.2.0/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-c++filt + compiler.objcppc64legtrunk.exe=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-gcc compiler.objcppc64legtrunk.semver=trunk compiler.objcppc64legtrunk.objdumper=/opt/compiler-explorer/powerpc64le/gcc-trunk/powerpc64le-unknown-linux-gnu/bin/powerpc64le-unknown-linux-gnu-objdump @@ -721,7 +767,7 @@ group.objcgccarm.includeFlag=-I # 32 bit group.objcgcc32arm.groupName=Arm 32-bit GCC -group.objcgcc32arm.compilers=objcarmg1220:objcarmg1230:objcarmg1240:objcarmg1250:objcarmg1310:objcarmg1320:objcarmg1330:objcarmg1340:objcarmg1410:objcarmg1420:objcarmg1430:objcarmg1510:objcarmgtrunk +group.objcgcc32arm.compilers=objcarmg1220:objcarmg1230:objcarmg1240:objcarmg1250:objcarmg1310:objcarmg1320:objcarmg1330:objcarmg1340:objcarmg1410:objcarmg1420:objcarmg1430:objcarmg1510:objcarmg1520:objcarmgtrunk group.objcgcc32arm.isSemVer=true group.objcgcc32arm.instructionSet=arm32 group.objcgcc32arm.baseName=ARM gcc @@ -786,6 +832,11 @@ compiler.objcarmg1510.semver=15.1.0 compiler.objcarmg1510.objdumper=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump compiler.objcarmg1510.demangler=/opt/compiler-explorer/arm/gcc-15.1.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt +compiler.objcarmg1520.exe=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gcc +compiler.objcarmg1520.semver=15.2.0 +compiler.objcarmg1520.objdumper=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-objdump +compiler.objcarmg1520.demangler=/opt/compiler-explorer/arm/gcc-15.2.0/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt + compiler.objcarmgtrunk.exe=/opt/compiler-explorer/arm/gcc-trunk/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gcc compiler.objcarmgtrunk.demangler=/opt/compiler-explorer/arm/gcc-trunk/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-c++filt compiler.objcarmgtrunk.name=ARM gcc trunk (linux) @@ -795,7 +846,7 @@ compiler.objcarmgtrunk.isNightly=true # 64 bit group.objcgcc64arm.groupName=Arm 64-bit GCC group.objcgcc64arm.baseName=ARM64 GCC -group.objcgcc64arm.compilers=objcarm64gtrunk:objcarm64g1220:objcarm64g1230:objcarm64g1310:objcarm64g1320:objcarm64g1410:objcarm64g1330:objcarm64g1240:objcarm64g1420:objcarm64g1510:objcarm64g1430:objcarm64g1340:objcarm64g1250 +group.objcgcc64arm.compilers=objcarm64gtrunk:objcarm64g1220:objcarm64g1230:objcarm64g1310:objcarm64g1320:objcarm64g1410:objcarm64g1330:objcarm64g1240:objcarm64g1420:objcarm64g1510:objcarm64g1430:objcarm64g1340:objcarm64g1250:objcarm64g1520 group.objcgcc64arm.isSemVer=true group.objcgcc64arm.instructionSet=aarch64 @@ -859,6 +910,11 @@ compiler.objcarm64g1510.semver=15.1.0 compiler.objcarm64g1510.objdumper=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.objcarm64g1510.demangler=/opt/compiler-explorer/arm64/gcc-15.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt +compiler.objcarm64g1520.exe=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc +compiler.objcarm64g1520.semver=15.2.0 +compiler.objcarm64g1520.objdumper=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump +compiler.objcarm64g1520.demangler=/opt/compiler-explorer/arm64/gcc-15.2.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt + compiler.objcarm64gtrunk.exe=/opt/compiler-explorer/arm64/gcc-trunk/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc compiler.objcarm64gtrunk.objdumper=/opt/compiler-explorer/arm64/gcc-trunk/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-objdump compiler.objcarm64gtrunk.demangler=/opt/compiler-explorer/arm64/gcc-trunk/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-c++filt @@ -874,7 +930,7 @@ group.objcmipss.supportsBinary=true group.objcmipss.supportsExecute=false ## MIPS -group.objcmips.compilers=objcmipsg1220:objcmipsg1230:objcmipsg1240:objcmipsg1250:objcmipsg1310:objcmipsg1320:objcmipsg1330:objcmipsg1340:objcmipsg1410:objcmipsg1420:objcmipsg1430:objcmipsg1510 +group.objcmips.compilers=objcmipsg1220:objcmipsg1230:objcmipsg1240:objcmipsg1250:objcmipsg1310:objcmipsg1320:objcmipsg1330:objcmipsg1340:objcmipsg1410:objcmipsg1420:objcmipsg1430:objcmipsg1510:objcmipsg1520 group.objcmips.groupName=MIPS GCC group.objcmips.baseName=mips gcc @@ -938,9 +994,14 @@ compiler.objcmipsg1510.semver=15.1.0 compiler.objcmipsg1510.objdumper=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump compiler.objcmipsg1510.demangler=/opt/compiler-explorer/mips/gcc-15.1.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt +compiler.objcmipsg1520.exe=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc +compiler.objcmipsg1520.semver=15.2.0 +compiler.objcmipsg1520.objdumper=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-objdump +compiler.objcmipsg1520.demangler=/opt/compiler-explorer/mips/gcc-15.2.0/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-c++filt + ## MIPS64 group.objcmips64.groupName=MIPS64 GCC -group.objcmips64.compilers=objcmips64g1220:objcmips64g1230:objcmips64g1310:objcmips64g1320:objcmips64g1410:objcmips64g1330:objcmips64g1240:objcmips64g1420:objcmips64g1510:objcmips64g1430:objcmips64g1340:objcmips64g1250 +group.objcmips64.compilers=objcmips64g1220:objcmips64g1230:objcmips64g1310:objcmips64g1320:objcmips64g1410:objcmips64g1330:objcmips64g1240:objcmips64g1420:objcmips64g1510:objcmips64g1430:objcmips64g1340:objcmips64g1250:objcmips64g1520 group.objcmips64.baseName=MIPS64 gcc compiler.objcmips64g1220.exe=/opt/compiler-explorer/mips64/gcc-12.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gcc @@ -1003,9 +1064,14 @@ compiler.objcmips64g1510.semver=15.1.0 compiler.objcmips64g1510.objdumper=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump compiler.objcmips64g1510.demangler=/opt/compiler-explorer/mips64/gcc-15.1.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt +compiler.objcmips64g1520.exe=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-gcc +compiler.objcmips64g1520.semver=15.2.0 +compiler.objcmips64g1520.objdumper=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-objdump +compiler.objcmips64g1520.demangler=/opt/compiler-explorer/mips64/gcc-15.2.0/mips64-unknown-linux-gnu/bin/mips64-unknown-linux-gnu-c++filt + ## MIPS EL group.objcmipsel.groupName=MIPSEL GCC -group.objcmipsel.compilers=objcmipselg1220:objcmipselg1230:objcmipselg1240:objcmipselg1250:objcmipselg1310:objcmipselg1320:objcmipselg1330:objcmipselg1340:objcmipselg1410:objcmipselg1420:objcmipselg1430:objcmipselg1510 +group.objcmipsel.compilers=objcmipselg1220:objcmipselg1230:objcmipselg1240:objcmipselg1250:objcmipselg1310:objcmipselg1320:objcmipselg1330:objcmipselg1340:objcmipselg1410:objcmipselg1420:objcmipselg1430:objcmipselg1510:objcmipselg1520 group.objcmipsel.baseName=mips (el) gcc compiler.objcmipselg1220.exe=/opt/compiler-explorer/mipsel/gcc-12.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gcc @@ -1068,9 +1134,14 @@ compiler.objcmipselg1510.semver=15.1.0 compiler.objcmipselg1510.objdumper=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump compiler.objcmipselg1510.demangler=/opt/compiler-explorer/mipsel/gcc-15.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt +compiler.objcmipselg1520.exe=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-gcc +compiler.objcmipselg1520.semver=15.2.0 +compiler.objcmipselg1520.objdumper=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump +compiler.objcmipselg1520.demangler=/opt/compiler-explorer/mipsel/gcc-15.2.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-c++filt + ## MIPS64 EL group.objcmips64el.groupName=MIPS64EL GCC -group.objcmips64el.compilers=objcmips64elg1220:objcmips64elg1230:objcmips64elg1310:objcmips64elg1320:objcmips64elg1410:objcmips64elg1330:objcmips64elg1240:objcmips64elg1420:objcmips64elg1510:objcmips64elg1430:objcmips64elg1340:objcmips64elg1250 +group.objcmips64el.compilers=objcmips64elg1220:objcmips64elg1230:objcmips64elg1310:objcmips64elg1320:objcmips64elg1410:objcmips64elg1330:objcmips64elg1240:objcmips64elg1420:objcmips64elg1510:objcmips64elg1430:objcmips64elg1340:objcmips64elg1250:objcmips64elg1520 group.objcmips64el.baseName=mips64 (el) gcc compiler.objcmips64elg1220.exe=/opt/compiler-explorer/mips64el/gcc-12.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-gcc @@ -1133,6 +1204,11 @@ compiler.objcmips64elg1510.semver=15.1.0 compiler.objcmips64elg1510.objdumper=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump compiler.objcmips64elg1510.demangler=/opt/compiler-explorer/mips64el/gcc-15.1.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt +compiler.objcmips64elg1520.exe=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-gcc +compiler.objcmips64elg1520.semver=15.2.0 +compiler.objcmips64elg1520.objdumper=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-objdump +compiler.objcmips64elg1520.demangler=/opt/compiler-explorer/mips64el/gcc-15.2.0/mips64el-multilib-linux-uclibc/bin/mips64el-multilib-linux-uclibc-c++filt + ############################### # GCC for RISC-V @@ -1146,7 +1222,7 @@ group.objcrv.supportsBinaryObject=true ## Subgroup for riscv32 group.objcrv32.groupName=RISC-V 32-bits group.objcrv32.baseName=RISC-V 32 GCC -group.objcrv32.compilers=objcrv32gtrunk:objcrv32g1220:objcrv32g1230:objcrv32g1310:objcrv32g1320:objcrv32g1410:objcrv32g1330:objcrv32g1240:objcrv32g1420:objcrv32g1510:objcrv32g1430:objcrv32g1340:objcrv32g1250 +group.objcrv32.compilers=objcrv32gtrunk:objcrv32g1220:objcrv32g1230:objcrv32g1310:objcrv32g1320:objcrv32g1410:objcrv32g1330:objcrv32g1240:objcrv32g1420:objcrv32g1510:objcrv32g1430:objcrv32g1340:objcrv32g1250:objcrv32g1520 compiler.objcrv32g1220.exe=/opt/compiler-explorer/riscv32/gcc-12.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gcc compiler.objcrv32g1220.semver=12.2.0 @@ -1208,6 +1284,11 @@ compiler.objcrv32g1510.semver=15.1.0 compiler.objcrv32g1510.objdumper=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump compiler.objcrv32g1510.demangler=/opt/compiler-explorer/riscv32/gcc-15.1.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt +compiler.objcrv32g1520.exe=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gcc +compiler.objcrv32g1520.semver=15.2.0 +compiler.objcrv32g1520.objdumper=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-objdump +compiler.objcrv32g1520.demangler=/opt/compiler-explorer/riscv32/gcc-15.2.0/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt + compiler.objcrv32gtrunk.exe=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-gcc compiler.objcrv32gtrunk.semver=(trunk) compiler.objcrv32gtrunk.demangler=/opt/compiler-explorer/riscv32/gcc-trunk/riscv32-unknown-linux-gnu/bin/riscv32-unknown-linux-gnu-c++filt @@ -1232,7 +1313,7 @@ compiler.objcrv64gtrunk.isNightly=true ############################### # GCC for HPPA -group.objchppa.compilers=objchppag1420:objchppag1430:objchppag1510 +group.objchppa.compilers=objchppag1420:objchppag1430:objchppag1510:objchppag1520 group.objchppa.groupName=HPPA GCC group.objchppa.baseName=hppa gcc group.objchppa.isSemVer=true @@ -1255,6 +1336,11 @@ compiler.objchppag1510.semver=15.1.0 compiler.objchppag1510.objdumper=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump compiler.objchppag1510.demangler=/opt/compiler-explorer/hppa/gcc-15.1.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt +compiler.objchppag1520.exe=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-gcc +compiler.objchppag1520.semver=15.2.0 +compiler.objchppag1520.objdumper=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-objdump +compiler.objchppag1520.demangler=/opt/compiler-explorer/hppa/gcc-15.2.0/hppa-unknown-linux-gnu/bin/hppa-unknown-linux-gnu-c++filt + ############################### # GCC for VAX # diff --git a/etc/config/python.amazon.properties b/etc/config/python.amazon.properties index b420afa76..72b0fe8f5 100644 --- a/etc/config/python.amazon.properties +++ b/etc/config/python.amazon.properties @@ -1,4 +1,4 @@ -compilers=&python3:&pypy:&pythran +compilers=&python3:&pypy:&pythran:&codon defaultCompiler=python313 group.python3.compilers=python35:python36:python37:python38:python39:python310:python311:python312:python313 @@ -58,3 +58,20 @@ group.pythran.baseName=Pythran compiler.pythran015.exe=/opt/compiler-explorer/pythran/pythran-0.15/bin/pythran compiler.pythran015.semver=0.15 compiler.pythran015.cpp_compiler_root=/opt/compiler-explorer/gcc-13.2.0/ + +## Codon +group.codon.compilers=codon0192 +group.codon.interpreted=false +group.codon.compilerType=codon +group.codon.licenseLink=https://raw.githubusercontent.com/exaloop/codon/refs/heads/develop/LICENSE +group.codon.licenseName=Apache License 2.0 + +group.codon.supportsBinary=false +group.codon.supportsBinaryObject=false +group.codon.supportsExecute=false +group.codon.objdumper=/opt/compiler-explorer/gcc-13.2.0/bin/objdump +group.codon.isSemVer=true +group.codon.baseName=Codon + +compiler.codon0192.exe=/opt/compiler-explorer/codon-0.19.2/bin/codon +compiler.codon0192.semver=0.19.2 diff --git a/etc/config/rust.amazon.properties b/etc/config/rust.amazon.properties index 7e36c6593..979c84268 100644 --- a/etc/config/rust.amazon.properties +++ b/etc/config/rust.amazon.properties @@ -1,14 +1,14 @@ compilers=&rust:&rustgcc:&mrustc:&rustccggcc -objdumper=/opt/compiler-explorer/gcc-14.1.0/bin/objdump -linker=/opt/compiler-explorer/gcc-14.1.0/bin/gcc +objdumper=/opt/compiler-explorer/gcc-15.2.0/bin/objdump +linker=/opt/compiler-explorer/gcc-15.2.0/bin/gcc aarch64linker=/opt/compiler-explorer/arm64/gcc-14.1.0/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc -defaultCompiler=r1880 +defaultCompiler=r1890 demangler=/opt/compiler-explorer/demanglers/rust/bin/rustfilt buildenvsetup=ceconan-rust buildenvsetup.host=https://conan.compiler-explorer.com -group.rust.compilers=r1880:r1870:r1860:r1850:r1840:r1830:r1820:r1810:r1800:r1790:r1780:r1770:r1760:r1750:r1740:r1730:r1720:r1710:r1700:r1690:r1680:r1670:r1660:r1650:r1640:r1630:r1620:r1610:r1600:r1590:r1580:r1570:r1560:r1550:r1540:r1530:r1520:r1510:r1500:r1490:r1480:r1470:r1460:r1452:r1450:r1440:r1430:r1420:r1410:r1400:r1390:r1380:r1370:r1360:r1350:r1340:r1330:r1320:r1310:r1300:r1290:r1280:r1271:r1270:r1260:r1250:r1240:r1230:r1220:r1210:r1200:r1190:r1180:r1170:r1160:r1151:r1140:r1130:r1120:r1110:r1100:r190:r180:r170:r160:r150:r140:r130:r120:r110:r100:nightly:beta +group.rust.compilers=r1890:r1880:r1870:r1860:r1850:r1840:r1830:r1820:r1810:r1800:r1790:r1780:r1770:r1760:r1750:r1740:r1730:r1720:r1710:r1700:r1690:r1680:r1670:r1660:r1650:r1640:r1630:r1620:r1610:r1600:r1590:r1580:r1570:r1560:r1550:r1540:r1530:r1520:r1510:r1500:r1490:r1480:r1470:r1460:r1452:r1450:r1440:r1430:r1420:r1410:r1400:r1390:r1380:r1370:r1360:r1350:r1340:r1330:r1320:r1310:r1300:r1290:r1280:r1271:r1270:r1260:r1250:r1240:r1230:r1220:r1210:r1200:r1190:r1180:r1170:r1160:r1151:r1140:r1130:r1120:r1110:r1100:r190:r180:r170:r160:r150:r140:r130:r120:r110:r100:nightly:beta group.rust.compilerType=rust group.rust.isSemVer=true group.rust.unwiseOptions=-Ctarget-cpu=native|target-cpu=native @@ -21,6 +21,9 @@ group.rust.supportsBinaryObject=true group.rust.supportsClippy=true # Rust 1.83+ needs `libPath` for execution with dynamically linked standard library # see https://github.com/compiler-explorer/compiler-explorer/pull/7367 +compiler.r1890.exe=/opt/compiler-explorer/rust-1.89.0/bin/rustc +compiler.r1890.semver=1.89.0 +compiler.r1890.libPath=${exePath}/../lib/rustlib/x86_64-unknown-linux-gnu/lib compiler.r1880.exe=/opt/compiler-explorer/rust-1.88.0/bin/rustc compiler.r1880.semver=1.88.0 compiler.r1880.libPath=${exePath}/../lib/rustlib/x86_64-unknown-linux-gnu/lib @@ -233,7 +236,7 @@ group.rustgcc.options=-frust-incomplete-and-experimental-compiler-do-not-use group.rustgcc.notification=Rust GCC Frontend - Very early snapshot # native compiler -group.gcc86.compilers=&gccrsassert:gccrs-snapshot:gccrs-g141:gccrs-g142:gccrs-g143:gccrs-g151:gcc-snapshot +group.gcc86.compilers=&gccrsassert:gccrs-snapshot:gccrs-g141:gccrs-g142:gccrs-g143:gccrs-g151:gccrs-g152:gcc-snapshot group.gcc86.groupName=x86-64 GCCRS group.gcc86.baseName=x86-64 GCCRS group.gcc86.unwiseOptions=-march=native @@ -250,6 +253,9 @@ compiler.gccrs-g143.semver=14.3 (GCC) compiler.gccrs-g151.exe=/opt/compiler-explorer/gcc-15.1.0/bin/gccrs compiler.gccrs-g151.semver=15.1 (GCC) +compiler.gccrs-g152.exe=/opt/compiler-explorer/gcc-15.2.0/bin/gccrs +compiler.gccrs-g152.semver=15.2 (GCC) + compiler.gcc-snapshot.exe=/opt/compiler-explorer/gcc-snapshot/bin/gccrs compiler.gcc-snapshot.semver=(GCC master) compiler.gcc-snapshot.isNightly=true @@ -259,7 +265,7 @@ compiler.gccrs-snapshot.semver=(GCCRS master) compiler.gccrs-snapshot.isNightly=true ## GCC (from upstream GCC, not GCCRS github) x86 build with "assertions" (--enable-checking=XXX) -group.gccrsassert.compilers=gccrs-g141assert:gccrs-g142assert:gccrs-g143assert:gccrs-g151assert +group.gccrsassert.compilers=gccrs-g141assert:gccrs-g142assert:gccrs-g143assert:gccrs-g151assert:gccrs-g152assert group.gccrsassert.groupName=x86-64 GCC (assertions) compiler.gccrs-g141assert.exe=/opt/compiler-explorer/gcc-assertions-14.1.0/bin/gccrs @@ -274,6 +280,9 @@ compiler.gccrs-g143assert.semver=14.3 (GCC assertions) compiler.gccrs-g151assert.exe=/opt/compiler-explorer/gcc-assertions-15.1.0/bin/gccrs compiler.gccrs-g151assert.semver=15.1 (GCC assertions) +compiler.gccrs-g152assert.exe=/opt/compiler-explorer/gcc-assertions-15.2.0/bin/gccrs +compiler.gccrs-g152assert.semver=15.2 (GCC assertions) + # cross compilers group.gcccross.compilers=&rustgccbpf group.gcccross.supportsExecute=false diff --git a/etc/config/spice.amazon.properties b/etc/config/spice.amazon.properties index bc7d555c6..ef997113e 100644 --- a/etc/config/spice.amazon.properties +++ b/etc/config/spice.amazon.properties @@ -1,7 +1,7 @@ compilers=&spice -defaultCompiler=spice02202 +defaultCompiler=spice02203 -group.spice.compilers=spice01902:spice01903:spice01904:spice01905:spice01906:spice02000:spice02001:spice02002:spice02003:spice02004:spice02005:spice02006:spice02100:spice02101:spice02200:spice02201:spice02202 +group.spice.compilers=spice01902:spice01903:spice01904:spice01905:spice01906:spice02000:spice02001:spice02002:spice02003:spice02004:spice02005:spice02006:spice02100:spice02101:spice02200:spice02201:spice02202:spice02203 group.spice.demangler=/opt/compiler-explorer/gcc-14.2.0/bin/c++filt group.spice.objdumper=/opt/compiler-explorer/gcc-14.2.0/bin/objdump group.spice.isSemVer=true @@ -49,6 +49,8 @@ compiler.spice02201.exe=/opt/compiler-explorer/spice-0.22.1/spice compiler.spice02201.semver=0.22.1 compiler.spice02202.exe=/opt/compiler-explorer/spice-0.22.2/spice compiler.spice02202.semver=0.22.2 +compiler.spice02203.exe=/opt/compiler-explorer/spice-0.22.3/spice +compiler.spice02203.semver=0.22.3 ################################# ################################# diff --git a/etc/config/triton.amazon.properties b/etc/config/triton.amazon.properties index 8fd65dc81..346ddc206 100644 --- a/etc/config/triton.amazon.properties +++ b/etc/config/triton.amazon.properties @@ -1,5 +1,5 @@ compilers=&triton_nvidia:&triton_amd -defaultCompiler=triton_nvidia_331 +defaultCompiler=triton_nvidia_340 compilerType=triton interpreted=true supportsBinary=false @@ -7,10 +7,13 @@ supportsExecute=false isSemVer=true notification=Experimental Triton support on Compiler Explorer. For tutorials, bugs reports, and feature requests, please visit here. -group.triton_nvidia.compilers=triton_nvidia_331:triton_nvidia_330:triton_nvidia_320:triton_nvidia_310:triton_nvidia_300:triton_nvidia_231:triton_nvidia_230 +group.triton_nvidia.compilers=triton_nvidia_340:triton_nvidia_331:triton_nvidia_330:triton_nvidia_320:triton_nvidia_310:triton_nvidia_300:triton_nvidia_231:triton_nvidia_230 group.triton_nvidia.groupName=Triton (Nvidia) group.triton_nvidia.options=--backend cuda --arch 90 --warp_size 32 +compiler.triton_nvidia_340.name=Triton 3.4.0 (Nvidia) +compiler.triton_nvidia_340.exe=/opt/compiler-explorer/triton/v3.4.0/bin/python3 + compiler.triton_nvidia_331.name=Triton 3.3.1 (Nvidia) compiler.triton_nvidia_331.exe=/opt/compiler-explorer/triton/v3.3.1/bin/python3 @@ -32,10 +35,13 @@ compiler.triton_nvidia_231.exe=/opt/compiler-explorer/triton/v2.3.1/bin/python3 compiler.triton_nvidia_230.name=Triton 2.3.0 (Nvidia) compiler.triton_nvidia_230.exe=/opt/compiler-explorer/triton/v2.3.0/bin/python3 -group.triton_amd.compilers=triton_amd_331:triton_amd_330:triton_amd_320:triton_amd_310:triton_amd_300 +group.triton_amd.compilers=triton_amd_340:triton_amd_331:triton_amd_330:triton_amd_320:triton_amd_310:triton_amd_300 group.triton_amd.groupName=Triton (AMD) group.triton_amd.options=--backend hip --arch gfx942 --warp_size 32 +compiler.triton_amd_340.name=Triton 3.4.0 (AMD) +compiler.triton_amd_340.exe=/opt/compiler-explorer/triton/v3.4.0/bin/python3 + compiler.triton_amd_331.name=Triton 3.3.1 (AMD) compiler.triton_amd_331.exe=/opt/compiler-explorer/triton/v3.3.1/bin/python3 diff --git a/etc/config/triton.defaults.properties b/etc/config/triton.defaults.properties index 8fd65dc81..346ddc206 100644 --- a/etc/config/triton.defaults.properties +++ b/etc/config/triton.defaults.properties @@ -1,5 +1,5 @@ compilers=&triton_nvidia:&triton_amd -defaultCompiler=triton_nvidia_331 +defaultCompiler=triton_nvidia_340 compilerType=triton interpreted=true supportsBinary=false @@ -7,10 +7,13 @@ supportsExecute=false isSemVer=true notification=Experimental Triton support on Compiler Explorer. For tutorials, bugs reports, and feature requests, please visit here. -group.triton_nvidia.compilers=triton_nvidia_331:triton_nvidia_330:triton_nvidia_320:triton_nvidia_310:triton_nvidia_300:triton_nvidia_231:triton_nvidia_230 +group.triton_nvidia.compilers=triton_nvidia_340:triton_nvidia_331:triton_nvidia_330:triton_nvidia_320:triton_nvidia_310:triton_nvidia_300:triton_nvidia_231:triton_nvidia_230 group.triton_nvidia.groupName=Triton (Nvidia) group.triton_nvidia.options=--backend cuda --arch 90 --warp_size 32 +compiler.triton_nvidia_340.name=Triton 3.4.0 (Nvidia) +compiler.triton_nvidia_340.exe=/opt/compiler-explorer/triton/v3.4.0/bin/python3 + compiler.triton_nvidia_331.name=Triton 3.3.1 (Nvidia) compiler.triton_nvidia_331.exe=/opt/compiler-explorer/triton/v3.3.1/bin/python3 @@ -32,10 +35,13 @@ compiler.triton_nvidia_231.exe=/opt/compiler-explorer/triton/v2.3.1/bin/python3 compiler.triton_nvidia_230.name=Triton 2.3.0 (Nvidia) compiler.triton_nvidia_230.exe=/opt/compiler-explorer/triton/v2.3.0/bin/python3 -group.triton_amd.compilers=triton_amd_331:triton_amd_330:triton_amd_320:triton_amd_310:triton_amd_300 +group.triton_amd.compilers=triton_amd_340:triton_amd_331:triton_amd_330:triton_amd_320:triton_amd_310:triton_amd_300 group.triton_amd.groupName=Triton (AMD) group.triton_amd.options=--backend hip --arch gfx942 --warp_size 32 +compiler.triton_amd_340.name=Triton 3.4.0 (AMD) +compiler.triton_amd_340.exe=/opt/compiler-explorer/triton/v3.4.0/bin/python3 + compiler.triton_amd_331.name=Triton 3.3.1 (AMD) compiler.triton_amd_331.exe=/opt/compiler-explorer/triton/v3.3.1/bin/python3 diff --git a/etc/scripts/docenizers/docenizer-ptx-sass.py b/etc/scripts/docenizers/docenizer-ptx-sass.py index 1f875a02b..4fc4b0ebe 100644 --- a/etc/scripts/docenizers/docenizer-ptx-sass.py +++ b/etc/scripts/docenizers/docenizer-ptx-sass.py @@ -73,7 +73,7 @@ def main(): (soup.find('a', class_='reference internal', href='#special-registers').parent.find_all('a'), 'Special Registers: ')]: for link in links: - if anchor_text_sep in link.string: + if link.string and anchor_text_sep in link.string: topic, instructions0 = link.string.split(anchor_text_sep) instructions: list[str] = instructions0.replace(' / ', ', ').split(', ') href: str = link.get('href') @@ -100,19 +100,23 @@ def main(): raise AssertionError article.p.decompose() # remove the instruction name return Doc(title.rstrip(''), txt, str(article)) - + symbol_to_doc: list[tuple[str, str, str, list[tuple[str, str]]]] = [] for symbol, fullname_fragments in symbol_to_fullname_frag: docs = [get_doc(fragment) for _, fragment in fullname_fragments] symbol_to_doc.append((symbol, *combine_docs(docs, fullname_fragments), fullname_fragments)) - + # get SASS docs tables = pd.read_html('https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html', match='Opcode') - sass_docs = sorted(dict(pd.concat(tables).dropna().itertuples(index=False)).items()) + sass_docs = sorted( + (opcode, description) + for (opcode, description) in pd.concat(tables).dropna().drop_duplicates(["Opcode"], keep="last").itertuples(index=False) + if opcode != description + ) with open( args.outputfolder + '/asm-docs-ptx.ts', 'w') as f: f.write(""" - import {AssemblyInstructionInfo} from '../base.js'; + import type {AssemblyInstructionInfo} from '../../../types/assembly-docs.interfaces.js'; export function getAsmOpcode(opcode: string | undefined): AssemblyInstructionInfo | undefined { if (!opcode) return; @@ -133,7 +137,7 @@ def main(): """) with open(args.outputfolder + '/asm-docs-sass.ts', 'w') as f: f.write(""" - import {AssemblyInstructionInfo} from '../base.js'; + import type {AssemblyInstructionInfo} from '../../../types/assembly-docs.interfaces.js'; export function getAsmOpcode(opcode: string | undefined): AssemblyInstructionInfo | undefined { if (!opcode) return; @@ -141,15 +145,16 @@ def main(): """.lstrip()) # SASS for name, description in sass_docs: + url = f"https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" f.write(f' case "{name}":\n') f.write(' return {}'.format(json.dumps({ "tooltip": description, "html": description + - f'

For more information, visit ' + f'

For more information, visit
' 'CUDA Binary Utilities' + ' documentation .', - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": url }, indent=16, separators=(',', ': '), sort_keys=True))[:-1] + ' };\n\n') f.write(""" @@ -158,4 +163,4 @@ def main(): """) if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/etc/scripts/parsed-pug/package.json b/etc/scripts/parsed-pug/package.json deleted file mode 100644 index 5bbefffba..000000000 --- a/etc/scripts/parsed-pug/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "commonjs" -} diff --git a/etc/scripts/test_triton_wrapper.py b/etc/scripts/test_triton_wrapper.py new file mode 100644 index 000000000..0745be87b --- /dev/null +++ b/etc/scripts/test_triton_wrapper.py @@ -0,0 +1,156 @@ +# Copyright (c) 2025, Compiler Explorer Authors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import subprocess +import tempfile +from dataclasses import dataclass +from pathlib import Path +from typing import Tuple + +import pytest + + +@dataclass(frozen=True) +class Config: + version_tuple: Tuple[int, int, int] + backend: str + opt_pipeline: bool + + @property + def python_path(self) -> Path: + version = f"v{'.'.join(str(v) for v in self.version_tuple)}" + return Path(f"/opt/compiler-explorer/triton/{version}/bin/python3") + + +CONFIGS = [ + Config(version_tuple=version_tuple, backend=backend, opt_pipeline=opt_pipeline) + for backend in ["cuda", "hip"] + for opt_pipeline in [True, False] + for version_tuple in [ + (3, 4, 0), + (3, 3, 1), + (3, 3, 0), + (3, 2, 0), + (3, 1, 0), + (3, 0, 0), + (2, 3, 1), + (2, 3, 0), + ] + if ( + not any( + [ + # AMD support added in 3.0.0 + (backend == "hip" and version_tuple < (3, 0, 0)), + # Opt pipeline support added in 3.3.0 + (opt_pipeline and version_tuple < (3, 3, 0)), + ] + ) + ) +] + +# Simple Triton example code for testing +KERNEL_NAME = "store_kernel" +EXAMPLE_CODE = """ +import torch +import triton +import triton.language as tl + +@triton.jit +def store_kernel(ptr, val): + tl.store(ptr, val) + +x = torch.empty(1) +store_kernel[(1,)](x, 1) +""" + + +@pytest.mark.parametrize("config", CONFIGS) +def test_triton_wrapper(config: Config): + if not config.python_path.exists(): + pytest.skip(f"Python interpreter not found: {config.python_path}") + + # Create temporary files for testing + with tempfile.TemporaryDirectory() as temp_dir: + temp_dir_path = Path(temp_dir) + + # Create example input file + input_file = temp_dir_path / "example.py" + with open(input_file, "w") as f: + f.write(EXAMPLE_CODE) + + # Output files + output_file = temp_dir_path / "output.s" + opt_pipeline_file = temp_dir_path / "opt_pipeline.txt" + + # Run triton_wrapper.py + script_path = Path(__file__).parent / "triton_wrapper.py" + cmd = [ + str(config.python_path), + str(script_path), + str(input_file), + "--output_file", + str(output_file), + "--backend", + config.backend, + ] + + if config.opt_pipeline: + cmd.append("--opt_pipeline") + cmd.append(str(opt_pipeline_file)) + + try: + subprocess.run(cmd, check=True, timeout=60) + + if config.opt_pipeline: + # Check that the opt pipeline file was created + assert opt_pipeline_file.exists(), f"Opt pipeline file not created" + assert ( + KERNEL_NAME in opt_pipeline_file.read_text() + ), f"Opt pipeline file does not contain kernel name: {KERNEL_NAME}" + else: + # Check that the output file was created + assert output_file.exists(), f"Output file not created" + + # Check that the output file has content + output_content = output_file.read_text() + assert output_content, f"Output file is empty" + + # Check for auxiliary files + files = list(temp_dir_path.iterdir()) + exts = [".ttir", ".ttgir", ".llir", ".json"] + if config.backend == "hip": + exts.append(".amdgcn") + elif config.backend == "cuda": + exts.append(".ptx") + for ext in exts: + file = next((f for f in files if f.suffix == ext), None) + assert file is not None, f"Missing file with extension {ext}" + assert ( + KERNEL_NAME in file.read_text() + ), f"File does not contain kernel name: {KERNEL_NAME}" + + except subprocess.CalledProcessError: + pytest.fail(f"Error running triton_wrapper.py") + except subprocess.TimeoutExpired: + pytest.fail(f"Timeout running triton_wrapper.py") diff --git a/etc/scripts/triton_wrapper.py b/etc/scripts/triton_wrapper.py index a13d8ee00..8473ea349 100644 --- a/etc/scripts/triton_wrapper.py +++ b/etc/scripts/triton_wrapper.py @@ -1,6 +1,29 @@ +# Copyright (c) 2025, Compiler Explorer Authors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + import argparse import importlib.util -import inspect import json import os from pathlib import Path @@ -123,8 +146,8 @@ def setup_triton( 2. Even if Triton adds such support, older versions of Triton (e.g., v2.3.x) still requirs such patching to work. - This function is a collection of hacks. It has been tested to work with Triton - 2.3.0, 2.3.1, 3.0.0, 3.1.0, 3.2.0, 3.3.0, 3.3.1. + This function is a collection of hacks. It has been tested to work with Triton versions: + 2.3.0, 2.3.1, 3.0.0, 3.1.0, 3.2.0, 3.3.0, 3.3.1, 3.4.0. """ os.environ["TRITON_ALWAYS_COMPILE"] = "1" @@ -181,6 +204,19 @@ def setup_triton( except ImportError: pass + # Triton used to depends on the ld.lld binary, and search for the following paths: + # - TRITON_HIP_LLD_PATH (see https://github.com/triton-lang/triton/pull/3917) + # - third_party/amd/backend/llvm/bin/ld.lld (see https://github.com/triton-lang/triton/pull/3662) + # - /opt/rocm/llvm/bin/ld.lld + # - /usr/bin/ld.lld (see https://github.com/triton-lang/triton/pull/3197) + # However, none of them are available in the production environment, which causes + # Exception: ROCm linker /opt/rocm/llvm/bin/ld.lld not found. Set 'TRITON_HIP_LLD_PATH' to its path. + # Since the linker is only used to generate the binary .hsaco file (from the .amdgcn assembly), + # we don't really need it. We can just mock it to be a no-op. + # Note: Triton no longer depends on the ld.lld binary after v3.4.0 (exclusive) with commit: + # https://github.com/triton-lang/triton/pull/7548 + os.environ["TRITON_HIP_LLD_PATH"] = "/bin/true" + def main( input_file: Path, diff --git a/etc/scripts/vc19_amd.bat b/etc/scripts/vc19_amd.bat deleted file mode 100644 index d200b052a..000000000 --- a/etc/scripts/vc19_amd.bat +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -rem gotten from something like: -rem call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -rem set -rem get out the include/lib/libpath/path -set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt; -set LIB=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64; -set LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64;References\CommonConfiguration\Neutral;\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral; -set Path=C:\Program Files (x86)\MSBuild\14.0\bin\amd64;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64;C:\Program Files (x86)\Windows Kits\8.1\bin\x64;C:\Program Files (x86)\Windows Kits\8.1\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Amazon\cfn-bootstrap\;C:\ProgramData\chocolatey\bin;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Users\Administrator\AppData\Roaming\npm -cl /nologo %* diff --git a/etc/scripts/vc19_x86.bat b/etc/scripts/vc19_x86.bat deleted file mode 100644 index 2199e521f..000000000 --- a/etc/scripts/vc19_x86.bat +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -rem gotten from something like: -rem call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 -rem set -rem get out the include/lib/libpath/path -set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE;C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\winrt; -set LIB=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB;C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86; -set LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB;References\CommonConfiguration\Neutral;\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral; -set Path=C:\Program Files (x86)\MSBuild\14.0\bin;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN;C:\Program Files (x86)\Windows Kits\8.1\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Amazon\cfn-bootstrap\;C:\ProgramData\chocolatey\bin;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Users\Administrator\AppData\Roaming\npm -cl /nologo %* diff --git a/etc/scripts/parsed-pug/parsed_pug_file.js b/etc/webpack/parsed-pug-loader.js similarity index 91% rename from etc/scripts/parsed-pug/parsed_pug_file.js rename to etc/webpack/parsed-pug-loader.js index 8f54593cb..40fa0af16 100644 --- a/etc/scripts/parsed-pug/parsed_pug_file.js +++ b/etc/webpack/parsed-pug-loader.js @@ -1,7 +1,7 @@ -const {execSync} = require('child_process'); -const {getHashDigest} = require('loader-utils'); -const pug = require('pug'); -const path = require('path'); +import {execSync} from 'child_process'; +import {getHashDigest} from 'loader-utils'; +import pug from 'pug'; +import path from 'path'; // If you edit either cookies.pug or privacy.pug be aware this will trigger a popup on the users' next visit. // Knowing the last versions here helps us be aware when this happens. If you get an error here and you _haven't_ @@ -9,7 +9,7 @@ const path = require('path'); // just update the hash here. const expectedHashes = { cookies: '08712179739d3679', - privacy: 'c0dad1f48a56b761', + privacy: '074dd09a246ad6fe', }; function _execGit(command) { @@ -20,7 +20,7 @@ function _execGit(command) { return gitResult.toString(); } -module.exports = function (content) { +export default function (content) { const filePath = this.resourcePath; const filename = path.basename(filePath, '.pug'); const options = this.getOptions(); diff --git a/etc/webpack/replace-golden-layout-imports.js b/etc/webpack/replace-golden-layout-imports.js new file mode 100644 index 000000000..fd407dba3 --- /dev/null +++ b/etc/webpack/replace-golden-layout-imports.js @@ -0,0 +1,56 @@ +/** + * Simple webpack loader to replace @import statements for golden-layout with actual CSS content + * This runs before sass-loader to replace the imports with raw CSS content + */ + +import fs from 'fs'; +import path from 'path'; +import {fileURLToPath} from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const GOLDEN_LAYOUT_PREFIX = '~golden-layout/'; + +export default function replaceGoldenLayoutImports(source) { + // Only process if it contains golden-layout imports + if (!source.includes('@import') || !source.includes('golden-layout')) { + return source; + } + + // Find all golden-layout @import statements and replace them + const importRegex = /@import\s+['"]([^'"]+)['"];?\s*/g; + + return source.replace(importRegex, (match, importPath) => { + if (importPath.startsWith(GOLDEN_LAYOUT_PREFIX)) { + return replaceGoldenLayoutImport(importPath); + } + + // Return other imports unchanged + return match; + }); +}; + +function replaceGoldenLayoutImport(importPath) { + const goldenLayoutPath = importPath.substring(GOLDEN_LAYOUT_PREFIX.length); + const cssContent = readGoldenLayoutCSS(goldenLayoutPath); + const fileName = goldenLayoutPath.split('/').pop(); + const themeName = fileName.replace(/^goldenlayout-/, '').replace(/\.css$/, ''); + + return `/* Golden Layout ${themeName} - Inlined */\n${cssContent}\n/* End Golden Layout ${themeName} */`; +} + +function readGoldenLayoutCSS(relativePath) { + // Use import.meta.resolve to find the golden-layout package location robustly + const packageJsonPath = import.meta.resolve('golden-layout/package.json'); + const packageDir = path.dirname(fileURLToPath(packageJsonPath)); + + // Ensure .css extension if not present + const finalPath = relativePath.endsWith('.css') ? relativePath : `${relativePath}.css`; + const cssPath = path.join(packageDir, finalPath); + + if (!fs.existsSync(cssPath)) { + throw new Error(`Golden Layout CSS file not found: ${cssPath}`); + } + + return fs.readFileSync(cssPath, 'utf8'); +} diff --git a/lib/asm-docs/generated/asm-docs-sass.ts b/lib/asm-docs/generated/asm-docs-sass.ts index d7f9d4f5a..b6f5e326a 100644 --- a/lib/asm-docs/generated/asm-docs-sass.ts +++ b/lib/asm-docs/generated/asm-docs-sass.ts @@ -5,1633 +5,1990 @@ import type {AssemblyInstructionInfo} from '../../../types/assembly-docs.interfa switch (opcode) { case "ACQBULK": return { - "html": "Wait for Bulk Release Status Warp State

For more information, visit CUDA Binary Utilities documentation .", + "html": "Wait for Bulk Release Status Warp State

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Wait for Bulk Release Status Warp State", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "ACQSHMINIT": + return { + "html": "Wait for Shared Memory Initialization Release Status Warp State

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Wait for Shared Memory Initialization Release Status Warp State", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ATOM": return { - "html": "Atomic Operation on Generic Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Atomic Operation on Generic Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Atomic Operation on Generic Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ATOMG": return { - "html": "Atomic Operation on Global Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Atomic Operation on Global Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Atomic Operation on Global Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ATOMS": return { - "html": "Atomic Operation on Shared Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Atomic Operation on Shared Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Atomic Operation on Shared Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "B2R": return { - "html": "Move Barrier To Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Barrier To Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Barrier To Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BAR": return { - "html": "Barrier Synchronization

For more information, visit CUDA Binary Utilities documentation .", + "html": "Barrier Synchronization

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Barrier Synchronization", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BFE": return { - "html": "Bit Field Extract

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bit Field Extract

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bit Field Extract", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BFI": return { - "html": "Bit Field Insert

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bit Field Insert

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bit Field Insert", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BGMMA": return { - "html": "Bit Matrix Multiply and Accumulate Across Warps

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bit Matrix Multiply and Accumulate Across Warps

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bit Matrix Multiply and Accumulate Across Warps", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BMMA": return { - "html": "Bit Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bit Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bit Matrix Multiply and Accumulate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BMOV": return { - "html": "Move Convergence Barrier State

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Convergence Barrier State

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Convergence Barrier State", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BMSK": return { - "html": "Bitfield Mask

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bitfield Mask

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bitfield Mask", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BPT": return { - "html": "BreakPoint/Trap

For more information, visit CUDA Binary Utilities documentation .", + "html": "BreakPoint/Trap

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "BreakPoint/Trap", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BRA": return { - "html": "Relative Branch

For more information, visit CUDA Binary Utilities documentation .", + "html": "Relative Branch

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Relative Branch", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BREAK": return { - "html": "Break out of the Specified Convergence Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "Break out of the Specified Convergence Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Break out of the Specified Convergence Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BREV": return { - "html": "Bit Reverse

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bit Reverse

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bit Reverse", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BRK": return { - "html": "Break

For more information, visit CUDA Binary Utilities documentation .", + "html": "Break

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Break", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BRX": return { - "html": "Relative Branch Indirect

For more information, visit CUDA Binary Utilities documentation .", + "html": "Relative Branch Indirect

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Relative Branch Indirect", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BRXU": return { - "html": "Relative Branch with Uniform Register Based Offset

For more information, visit CUDA Binary Utilities documentation .", + "html": "Relative Branch with Uniform Register Based Offset

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Relative Branch with Uniform Register Based Offset", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BSSY": return { - "html": "Barrier Set Convergence Synchronization Point

For more information, visit CUDA Binary Utilities documentation .", + "html": "Barrier Set Convergence Synchronization Point

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Barrier Set Convergence Synchronization Point", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "BSYNC": return { - "html": "Synchronize Threads on a Convergence Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "Synchronize Threads on a Convergence Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Synchronize Threads on a Convergence Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CAL": return { - "html": "Relative Call

For more information, visit CUDA Binary Utilities documentation .", + "html": "Relative Call

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Relative Call", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CALL": return { - "html": "Call Function

For more information, visit CUDA Binary Utilities documentation .", + "html": "Call Function

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Call Function", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CCTL": return { - "html": "Cache Control

For more information, visit CUDA Binary Utilities documentation .", + "html": "Cache Control

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Cache Control", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CCTLL": return { - "html": "Cache Control

For more information, visit CUDA Binary Utilities documentation .", + "html": "Cache Control

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Cache Control", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CCTLT": return { - "html": "Texture Cache Control

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Cache Control

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Cache Control", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CGAERRBAR": return { - "html": "CGA Error Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "CGA Error Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "CGA Error Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CONT": return { - "html": "Continue

For more information, visit CUDA Binary Utilities documentation .", + "html": "Continue

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Continue", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "CREDUX": + return { + "html": "Coupled Reduction of a Vector Register into a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Coupled Reduction of a Vector Register into a Uniform Register", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CS2R": return { - "html": "Move Special Register to Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Special Register to Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Special Register to Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "CS2UR": + return { + "html": "Load a Value from Constant Memory into a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Load a Value from Constant Memory into a Uniform Register", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CSET": return { - "html": "Test Condition Code And Set

For more information, visit CUDA Binary Utilities documentation .", + "html": "Test Condition Code And Set

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Test Condition Code And Set", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "CSETP": return { - "html": "Test Condition Code and Set Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Test Condition Code and Set Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Test Condition Code and Set Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DADD": return { - "html": "FP64 Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP64 Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP64 Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DEPBAR": return { - "html": "Dependency Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "Dependency Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Dependency Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DFMA": return { - "html": "FP64 Fused Mutiply Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP64 Fused Mutiply Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP64 Fused Mutiply Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DMMA": return { - "html": "Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Matrix Multiply and Accumulate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DMNMX": return { - "html": "FP64 Minimum/Maximum

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP64 Minimum/Maximum

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP64 Minimum/Maximum", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DMUL": return { - "html": "FP64 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP64 Multiply

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP64 Multiply", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DSET": return { - "html": "FP64 Compare And Set

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP64 Compare And Set

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP64 Compare And Set", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "DSETP": return { - "html": "FP64 Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP64 Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP64 Compare And Set Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ELECT": return { - "html": "Elect a Leader Thread

For more information, visit CUDA Binary Utilities documentation .", + "html": "Elect a Leader Thread

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Elect a Leader Thread", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ENDCOLLECTIVE": return { - "html": "Reset the MCOLLECTIVE mask

For more information, visit CUDA Binary Utilities documentation .", + "html": "Reset the MCOLLECTIVE mask

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Reset the MCOLLECTIVE mask", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ERRBAR": return { - "html": "Error Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "Error Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Error Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "EXIT": return { - "html": "Exit Program

For more information, visit CUDA Binary Utilities documentation .", + "html": "Exit Program

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Exit Program", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "F2F": return { - "html": "Floating Point To Floating Point Conversion

For more information, visit CUDA Binary Utilities documentation .", + "html": "Floating Point To Floating Point Conversion

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Floating Point To Floating Point Conversion", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "F2I": return { - "html": "Floating Point To Integer Conversion

For more information, visit CUDA Binary Utilities documentation .", + "html": "Floating Point To Integer Conversion

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Floating Point To Integer Conversion", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "F2IP": return { - "html": "FP32 Down-Convert to Integer and Pack

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Down-Convert to Integer and Pack

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Down-Convert to Integer and Pack", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FADD": return { - "html": "FP32 Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "FADD2": + return { + "html": "FP32 Add

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP32 Add", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FADD32I": return { - "html": "FP32 Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FCHK": return { - "html": "Floating-point Range Check

For more information, visit CUDA Binary Utilities documentation .", + "html": "Floating-point Range Check

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Floating-point Range Check", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FCMP": return { - "html": "FP32 Compare to Zero and Select Source

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Compare to Zero and Select Source

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Compare to Zero and Select Source", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FENCE": return { - "html": "Memory Visibility Guarantee for Shared or Global Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Memory Visibility Guarantee for Shared or Global Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Memory Visibility Guarantee for Shared or Global Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FFMA": return { - "html": "FP32 Fused Multiply and Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Fused Multiply and Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Fused Multiply and Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "FFMA2": + return { + "html": "FP32 Fused Multiply and Add

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP32 Fused Multiply and Add", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FFMA32I": return { - "html": "FP32 Fused Multiply and Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Fused Multiply and Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Fused Multiply and Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "FHADD": + return { + "html": "FP32 Addition

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP32 Addition", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "FHFMA": + return { + "html": "FP32 Fused Multiply and Add

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP32 Fused Multiply and Add", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FLO": return { - "html": "Find Leading One

For more information, visit CUDA Binary Utilities documentation .", + "html": "Find Leading One

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Find Leading One", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FMNMX": return { - "html": "FP32 Minimum/Maximum

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Minimum/Maximum

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Minimum/Maximum", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "FMNMX3": + return { + "html": "3-Input Floating-point Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "3-Input Floating-point Minimum / Maximum", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FMUL": return { - "html": "FP32 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Multiply

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Multiply", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "FMUL2": + return { + "html": "FP32 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP32 Multiply", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FMUL32I": return { - "html": "FP32 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Multiply

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Multiply", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FRND": return { - "html": "Round To Integer

For more information, visit CUDA Binary Utilities documentation .", + "html": "Round To Integer

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Round To Integer", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FSEL": return { - "html": "Floating Point Select

For more information, visit CUDA Binary Utilities documentation .", + "html": "Floating Point Select

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Floating Point Select", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FSET": return { - "html": "FP32 Compare And Set

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Compare And Set

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Compare And Set", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FSETP": return { - "html": "FP32 Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Compare And Set Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "FSWZADD": return { - "html": "FP32 Swizzle Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Swizzle Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Swizzle Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "GETLMEMBASE": return { - "html": "Get Local Memory Base Address

For more information, visit CUDA Binary Utilities documentation .", + "html": "Get Local Memory Base Address

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Get Local Memory Base Address", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HADD2": return { - "html": "FP16 Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HADD2_32I": return { - "html": "FP16 Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HFMA2": return { - "html": "FP16 Fused Mutiply Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Fused Mutiply Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Fused Mutiply Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HFMA2_32I": return { - "html": "FP16 Fused Mutiply Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Fused Mutiply Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Fused Mutiply Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HGMMA": return { - "html": "Matrix Multiply and Accumulate Across a Warpgroup

For more information, visit CUDA Binary Utilities documentation .", + "html": "Matrix Multiply and Accumulate Across a Warpgroup

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Matrix Multiply and Accumulate Across a Warpgroup", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HMMA": return { - "html": "Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Matrix Multiply and Accumulate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HMNMX2": return { - "html": "FP16 Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Minimum / Maximum", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HMUL2": return { - "html": "FP16 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Multiply

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Multiply", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HMUL2_32I": return { - "html": "FP16 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Multiply

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Multiply", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HSET2": return { - "html": "FP16 Compare And Set

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Compare And Set

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Compare And Set", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "HSETP2": return { - "html": "FP16 Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP16 Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP16 Compare And Set Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "I2F": return { - "html": "Integer To Floating Point Conversion

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer To Floating Point Conversion

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer To Floating Point Conversion", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "I2FP": return { - "html": "Integer to FP32 Convert and Pack

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer to FP32 Convert and Pack

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer to FP32 Convert and Pack", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "I2I": return { - "html": "Integer To Integer Conversion

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer To Integer Conversion

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer To Integer Conversion", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "I2IP": return { - "html": "Integer To Integer Conversion and Packing

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer To Integer Conversion and Packing

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer To Integer Conversion and Packing", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IABS": return { - "html": "Integer Absolute Value

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Absolute Value

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Absolute Value", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IADD": return { - "html": "Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IADD3": return { - "html": "3-input Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "3-input Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "3-input Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IADD32I": return { - "html": "Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ICMP": return { - "html": "Integer Compare to Zero and Select Source

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Compare to Zero and Select Source

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Compare to Zero and Select Source", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IDP": return { - "html": "Integer Dot Product and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Dot Product and Accumulate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Dot Product and Accumulate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IDP4A": return { - "html": "Integer Dot Product and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Dot Product and Accumulate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Dot Product and Accumulate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IGMMA": return { - "html": "Integer Matrix Multiply and Accumulate Across a Warpgroup

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Matrix Multiply and Accumulate Across a Warpgroup

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Matrix Multiply and Accumulate Across a Warpgroup", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IMAD": return { - "html": "Integer Multiply And Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Multiply And Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Multiply And Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IMADSP": return { - "html": "Extracted Integer Multiply And Add.

For more information, visit CUDA Binary Utilities documentation .", + "html": "Extracted Integer Multiply And Add.

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Extracted Integer Multiply And Add.", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IMMA": return { - "html": "Integer Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Matrix Multiply and Accumulate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IMNMX": return { - "html": "Integer Minimum/Maximum

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Minimum/Maximum

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Minimum/Maximum", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IMUL": return { - "html": "Integer Multiply

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Multiply

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Multiply", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "IMUL32I": return { - "html": "Integer Multiply

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Multiply

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Multiply", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ISCADD": return { - "html": "Scaled Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "Scaled Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Scaled Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ISCADD32I": return { - "html": "Scaled Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "Scaled Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Scaled Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ISET": return { - "html": "Integer Compare And Set

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Compare And Set

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Compare And Set", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ISETP": return { - "html": "Integer Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Compare And Set Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Compare And Set Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "JCAL": return { - "html": "Absolute Call

For more information, visit CUDA Binary Utilities documentation .", + "html": "Absolute Call

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Absolute Call", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "JMP": return { - "html": "Absolute Jump

For more information, visit CUDA Binary Utilities documentation .", + "html": "Absolute Jump

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Absolute Jump", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "JMX": return { - "html": "Absolute Jump Indirect

For more information, visit CUDA Binary Utilities documentation .", + "html": "Absolute Jump Indirect

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Absolute Jump Indirect", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "JMXU": return { - "html": "Absolute Jump with Uniform Register Based Offset

For more information, visit CUDA Binary Utilities documentation .", + "html": "Absolute Jump with Uniform Register Based Offset

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Absolute Jump with Uniform Register Based Offset", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "KILL": return { - "html": "Kill Thread

For more information, visit CUDA Binary Utilities documentation .", + "html": "Kill Thread

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Kill Thread", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LD": return { - "html": "Load from generic Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load from generic Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load from generic Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDC": return { - "html": "Load Constant

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load Constant

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load Constant", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "LDCU": + return { + "html": "Load a Value from Constant Memory into a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Load a Value from Constant Memory into a Uniform Register", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDG": return { - "html": "Load from Global Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load from Global Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load from Global Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDGDEPBAR": return { - "html": "Global Load Dependency Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "Global Load Dependency Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Global Load Dependency Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDGMC": return { - "html": "Reducing Load

For more information, visit CUDA Binary Utilities documentation .", + "html": "Reducing Load

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Reducing Load", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDGSTS": return { - "html": "Asynchronous Global to Shared Memcopy

For more information, visit CUDA Binary Utilities documentation .", + "html": "Asynchronous Global to Shared Memcopy

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Asynchronous Global to Shared Memcopy", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDL": return { - "html": "Load within Local Memory Window

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load within Local Memory Window

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load within Local Memory Window", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDS": return { - "html": "Load within Shared Memory Window

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load within Shared Memory Window

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load within Shared Memory Window", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LDSM": return { - "html": "Load Matrix from Shared Memory with Element Size Expansion

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load Matrix from Shared Memory with Element Size Expansion

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load Matrix from Shared Memory with Element Size Expansion", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "LDT": + return { + "html": "Load Matrix from Tensor Memory to Register File

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Load Matrix from Tensor Memory to Register File", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "LDTM": + return { + "html": "Load Matrix from Tensor Memory to Register File

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Load Matrix from Tensor Memory to Register File", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LEA": return { - "html": "LOAD Effective Address

For more information, visit CUDA Binary Utilities documentation .", + "html": "LOAD Effective Address

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "LOAD Effective Address", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LEPC": return { - "html": "Load Effective PC

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load Effective PC

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load Effective PC", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LOP": return { - "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LOP3": return { - "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "LOP32I": return { - "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "MATCH": return { - "html": "Match Register Values Across Thread Group

For more information, visit CUDA Binary Utilities documentation .", + "html": "Match Register Values Across Thread Group

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Match Register Values Across Thread Group", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "MEMBAR": return { - "html": "Memory Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "Memory Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Memory Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "MOV": return { - "html": "Move

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "MOV32I": return { - "html": "Move

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "MOVM": return { - "html": "Move Matrix with Transposition or Expansion

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Matrix with Transposition or Expansion

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Matrix with Transposition or Expansion", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "MUFU": return { - "html": "FP32 Multi Function Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP32 Multi Function Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP32 Multi Function Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "NANOSLEEP": return { - "html": "Suspend Execution

For more information, visit CUDA Binary Utilities documentation .", + "html": "Suspend Execution

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Suspend Execution", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "NOP": return { - "html": "No Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "No Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "No Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "OMMA": + return { + "html": "FP4 Matrix Multiply and Accumulate Across a Warp

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP4 Matrix Multiply and Accumulate Across a Warp", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "P2R": return { - "html": "Move Predicate Register To Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Predicate Register To Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Predicate Register To Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PBK": return { - "html": "Pre-Break

For more information, visit CUDA Binary Utilities documentation .", + "html": "Pre-Break

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Pre-Break", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PCNT": return { - "html": "Pre-continue

For more information, visit CUDA Binary Utilities documentation .", + "html": "Pre-continue

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Pre-continue", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PEXIT": return { - "html": "Pre-Exit

For more information, visit CUDA Binary Utilities documentation .", + "html": "Pre-Exit

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Pre-Exit", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PLOP3": return { - "html": "Predicate Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "Predicate Logic Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Predicate Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PMTRIG": return { - "html": "Performance Monitor Trigger

For more information, visit CUDA Binary Utilities documentation .", + "html": "Performance Monitor Trigger

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Performance Monitor Trigger", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "POPC": return { - "html": "Population count

For more information, visit CUDA Binary Utilities documentation .", + "html": "Population count

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Population count", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PREEXIT": return { - "html": "Dependent Task Launch Hint

For more information, visit CUDA Binary Utilities documentation .", + "html": "Dependent Task Launch Hint

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Dependent Task Launch Hint", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PRET": return { - "html": "Pre-Return From Subroutine

For more information, visit CUDA Binary Utilities documentation .", + "html": "Pre-Return From Subroutine

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Pre-Return From Subroutine", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PRMT": return { - "html": "Permute Register Pair

For more information, visit CUDA Binary Utilities documentation .", + "html": "Permute Register Pair

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Permute Register Pair", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PSET": return { - "html": "Combine Predicates and Set

For more information, visit CUDA Binary Utilities documentation .", + "html": "Combine Predicates and Set

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Combine Predicates and Set", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "PSETP": return { - "html": "Combine Predicates and Set Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Combine Predicates and Set Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Combine Predicates and Set Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "QADD4": + return { + "html": "FP8 Add

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP8 Add", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "QFMA4": + return { + "html": "FP8 Multiply and Add

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP8 Multiply and Add", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "QGMMA": return { - "html": "FP8 Matrix Multiply and Accumulate Across a Warpgroup

For more information, visit CUDA Binary Utilities documentation .", + "html": "FP8 Matrix Multiply and Accumulate Across a Warpgroup

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "FP8 Matrix Multiply and Accumulate Across a Warpgroup", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "QMMA": + return { + "html": "FP8 Matrix Multiply and Accumulate Across a Warp

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP8 Matrix Multiply and Accumulate Across a Warp", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "QMUL4": + return { + "html": "FP8 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "FP8 Multiply", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "QSPC": return { - "html": "Query Space

For more information, visit CUDA Binary Utilities documentation .", + "html": "Query Space

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Query Space", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "R2B": return { - "html": "Move Register to Barrier

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Register to Barrier

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Register to Barrier", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "R2P": return { - "html": "Move Register To Predicate Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Register To Predicate Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Register To Predicate Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "R2UR": return { - "html": "Move from Vector Register to a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move from Vector Register to a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move from Vector Register to a Uniform Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "RED": return { - "html": "Reduction Operation on Generic Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Reduction Operation on Generic Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Reduction Operation on Generic Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "REDAS": return { - "html": "Asynchronous Reduction on Distributed Shared Memory With Explicit Synchronization

For more information, visit CUDA Binary Utilities documentation .", + "html": "Asynchronous Reduction on Distributed Shared Memory With Explicit Synchronization

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Asynchronous Reduction on Distributed Shared Memory With Explicit Synchronization", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "REDG": return { - "html": "Reduction Operation on Generic Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Reduction Operation on Generic Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Reduction Operation on Generic Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "REDUX": return { - "html": "Reduction of a Vector Register into a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Reduction of a Vector Register into a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Reduction of a Vector Register into a Uniform Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "RET": return { - "html": "Return From Subroutine

For more information, visit CUDA Binary Utilities documentation .", + "html": "Return From Subroutine

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Return From Subroutine", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "RPCMOV": return { - "html": "PC Register Move

For more information, visit CUDA Binary Utilities documentation .", + "html": "PC Register Move

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "PC Register Move", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "RRO": return { - "html": "Range Reduction Operator FP

For more information, visit CUDA Binary Utilities documentation .", + "html": "Range Reduction Operator FP

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Range Reduction Operator FP", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "RTT": return { - "html": "Return From Trap

For more information, visit CUDA Binary Utilities documentation .", + "html": "Return From Trap

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Return From Trap", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "S2R": return { - "html": "Move Special Register to Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Special Register to Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Special Register to Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "S2UR": return { - "html": "Move Special Register to Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Move Special Register to Uniform Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Move Special Register to Uniform Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SEL": return { - "html": "Select Source with Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Select Source with Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Select Source with Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SETCTAID": return { - "html": "Set CTA ID

For more information, visit CUDA Binary Utilities documentation .", + "html": "Set CTA ID

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Set CTA ID", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SETLMEMBASE": return { - "html": "Set Local Memory Base Address

For more information, visit CUDA Binary Utilities documentation .", + "html": "Set Local Memory Base Address

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Set Local Memory Base Address", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SGXT": return { - "html": "Sign Extend

For more information, visit CUDA Binary Utilities documentation .", + "html": "Sign Extend

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Sign Extend", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SHF": return { - "html": "Funnel Shift

For more information, visit CUDA Binary Utilities documentation .", + "html": "Funnel Shift

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Funnel Shift", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SHFL": return { - "html": "Warp Wide Register Shuffle

For more information, visit CUDA Binary Utilities documentation .", + "html": "Warp Wide Register Shuffle

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Warp Wide Register Shuffle", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SHL": return { - "html": "Shift Left

For more information, visit CUDA Binary Utilities documentation .", + "html": "Shift Left

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Shift Left", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SHR": return { - "html": "Shift Right

For more information, visit CUDA Binary Utilities documentation .", + "html": "Shift Right

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Shift Right", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SSY": return { - "html": "Set Synchronization Point

For more information, visit CUDA Binary Utilities documentation .", + "html": "Set Synchronization Point

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Set Synchronization Point", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ST": return { - "html": "Store to Generic Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Store to Generic Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Store to Generic Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "STAS": return { - "html": "Asynchronous Store to Distributed Shared Memory With Explicit Synchronization

For more information, visit CUDA Binary Utilities documentation .", + "html": "Asynchronous Store to Distributed Shared Memory With Explicit Synchronization

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Asynchronous Store to Distributed Shared Memory With Explicit Synchronization", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "STG": return { - "html": "Store to Global Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Store to Global Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Store to Global Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "STL": return { - "html": "Store to Local Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Store to Local Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Store to Local Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "STS": return { - "html": "Store to Shared Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Store to Shared Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Store to Shared Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "STSM": return { - "html": "Store Matrix to Shared Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Store Matrix to Shared Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Store Matrix to Shared Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "STT": + return { + "html": "Store Matrix to Tensor Memory from Register File

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Store Matrix to Tensor Memory from Register File", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "STTM": + return { + "html": "Store Matrix to Tensor Memory from Register File

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Store Matrix to Tensor Memory from Register File", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SUATOM": return { - "html": "Atomic Op on Surface Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Atomic Op on Surface Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Atomic Op on Surface Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SULD": return { - "html": "Surface Load

For more information, visit CUDA Binary Utilities documentation .", + "html": "Surface Load

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Surface Load", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SURED": return { - "html": "Reduction Op on Surface Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Reduction Op on Surface Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Reduction Op on Surface Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SUST": return { - "html": "Surface Store

For more information, visit CUDA Binary Utilities documentation .", + "html": "Surface Store

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Surface Store", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SYNC": return { - "html": "Converge threads after conditional branch

For more information, visit CUDA Binary Utilities documentation .", + "html": "Converge threads after conditional branch

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Converge threads after conditional branch", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "SYNCS": return { - "html": "Sync Unit

For more information, visit CUDA Binary Utilities documentation .", + "html": "Sync Unit

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Sync Unit", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TEX": return { - "html": "Texture Fetch

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Fetch

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Fetch", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TEXS": return { - "html": "Texture Fetch with scalar/non-vec4 source/destinations

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Fetch with scalar/non-vec4 source/destinations

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Fetch with scalar/non-vec4 source/destinations", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TLD": return { - "html": "Texture Load

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Load

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Load", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TLD4": return { - "html": "Texture Load 4

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Load 4

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Load 4", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TLD4S": return { - "html": "Texture Load 4 with scalar/non-vec4 source/destinations

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Load 4 with scalar/non-vec4 source/destinations

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Load 4 with scalar/non-vec4 source/destinations", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TLDS": return { - "html": "Texture Load with scalar/non-vec4 source/destinations

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Load with scalar/non-vec4 source/destinations

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Load with scalar/non-vec4 source/destinations", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TMML": return { - "html": "Texture MipMap Level

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture MipMap Level

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture MipMap Level", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TXD": return { - "html": "Texture Fetch With Derivatives

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Fetch With Derivatives

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Fetch With Derivatives", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "TXQ": return { - "html": "Texture Query

For more information, visit CUDA Binary Utilities documentation .", + "html": "Texture Query

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Texture Query", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UBLKCP": return { - "html": "Bulk Data Copy

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bulk Data Copy

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bulk Data Copy", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UBLKPF": return { - "html": "Bulk Data Prefetch

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bulk Data Prefetch

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bulk Data Prefetch", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UBLKRED": return { - "html": "Bulk Data Copy from Shared Memory with Reduction

For more information, visit CUDA Binary Utilities documentation .", + "html": "Bulk Data Copy from Shared Memory with Reduction

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Bulk Data Copy from Shared Memory with Reduction", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UBMSK": return { - "html": "Uniform Bitfield Mask

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Bitfield Mask

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Bitfield Mask", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UBREV": return { - "html": "Uniform Bit Reverse

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Bit Reverse

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Bit Reverse", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UCGABAR_ARV": return { - "html": "CGA Barrier Synchronization

For more information, visit CUDA Binary Utilities documentation .", + "html": "CGA Barrier Synchronization

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "CGA Barrier Synchronization", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UCGABAR_WAIT": return { - "html": "CGA Barrier Synchronization

For more information, visit CUDA Binary Utilities documentation .", + "html": "CGA Barrier Synchronization

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "CGA Barrier Synchronization", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UCLEA": return { - "html": "Load Effective Address for a Constant

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load Effective Address for a Constant

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load Effective Address for a Constant", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UF2F": + return { + "html": "Uniform Float-to-Float Conversion

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Float-to-Float Conversion", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UF2FP": return { - "html": "Uniform FP32 Down-convert and Pack

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform FP32 Down-convert and Pack

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform FP32 Down-convert and Pack", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UF2I": + return { + "html": "Uniform Float-to-Integer Conversion

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Float-to-Integer Conversion", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UF2IP": + return { + "html": "Uniform FP32 Down-Convert to Integer and Pack

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform FP32 Down-Convert to Integer and Pack", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFADD": + return { + "html": "Uniform Uniform FP32 Addition

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Uniform FP32 Addition", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFFMA": + return { + "html": "Uniform FP32 Fused Multiply-Add

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform FP32 Fused Multiply-Add", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UFLO": return { - "html": "Uniform Find Leading One

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Find Leading One

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Find Leading One", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFMNMX": + return { + "html": "Uniform Floating-point Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Floating-point Minimum / Maximum", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFMUL": + return { + "html": "Uniform FP32 Multiply

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform FP32 Multiply", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFRND": + return { + "html": "Uniform Round to Integer

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Round to Integer", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFSEL": + return { + "html": "Uniform Floating-Point Select

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Floating-Point Select", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFSET": + return { + "html": "Uniform Floating-Point Compare and Set

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Floating-Point Compare and Set", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UFSETP": + return { + "html": "Uniform Floating-Point Compare and Set Predicate

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Floating-Point Compare and Set Predicate", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UGETNEXTWORKID": + return { + "html": "Uniform Get Next Work ID

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Get Next Work ID", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UI2F": + return { + "html": "Uniform Integer to Float conversion

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Integer to Float conversion", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UI2FP": + return { + "html": "Uniform Integer to FP32 Convert and Pack

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Integer to FP32 Convert and Pack", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UI2I": + return { + "html": "Uniform Saturating Integer-to-Integer Conversion

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Saturating Integer-to-Integer Conversion", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UI2IP": + return { + "html": "Uniform Dual Saturating Integer-to-Integer Conversion and Packing

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Dual Saturating Integer-to-Integer Conversion and Packing", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UIABS": + return { + "html": "Uniform Integer Absolute Value

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Integer Absolute Value", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UIADD3": return { - "html": "Uniform Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UIADD3.64": return { - "html": "Uniform Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UIMAD": return { - "html": "Uniform Integer Multiplication

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Integer Multiplication

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Integer Multiplication", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UIMNMX": + return { + "html": "Uniform Integer Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Integer Minimum / Maximum", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UISETP": return { - "html": "Integer Compare and Set Uniform Predicate

For more information, visit CUDA Binary Utilities documentation .", - "tooltip": "Integer Compare and Set Uniform Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "html": "Uniform Integer Compare and Set Uniform Predicate

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Integer Compare and Set Uniform Predicate", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ULDC": return { - "html": "Load from Constant Memory into a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Load from Constant Memory into a Uniform Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Load from Constant Memory into a Uniform Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ULEA": return { - "html": "Uniform Load Effective Address

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Load Effective Address

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Load Effective Address", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ULEPC": return { - "html": "Uniform Load Effective PC

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Load Effective PC

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Load Effective PC", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ULOP": return { - "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", - "tooltip": "Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "html": "Uniform Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Logic Operation", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ULOP3": return { - "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", - "tooltip": "Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "html": "Uniform Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Logic Operation", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "ULOP32I": return { - "html": "Logic Operation

For more information, visit CUDA Binary Utilities documentation .", - "tooltip": "Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "html": "Uniform Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Logic Operation", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UMEMSETS": + return { + "html": "Initialize Shared Memory

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Initialize Shared Memory", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UMOV": return { - "html": "Uniform Move

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Move

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Move", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UP2UR": return { - "html": "Uniform Predicate to Uniform Register

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Predicate to Uniform Register

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Predicate to Uniform Register", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UPLOP3": return { - "html": "Uniform Predicate Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Predicate Logic Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Predicate Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UPOPC": return { - "html": "Uniform Population Count

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Population Count

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Population Count", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UPRMT": return { - "html": "Uniform Byte Permute

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Byte Permute

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Byte Permute", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UPSETP": return { - "html": "Uniform Predicate Logic Operation

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Predicate Logic Operation

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Predicate Logic Operation", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UR2UP": return { - "html": "Uniform Register to Uniform Predicate

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Register to Uniform Predicate

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Register to Uniform Predicate", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UREDGR": + return { + "html": "Uniform Reduction on Global Memory with Release

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Reduction on Global Memory with Release", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "USEL": return { - "html": "Uniform Select

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Select

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Select", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "USETMAXREG": return { - "html": "Release, Deallocate and Allocate Registers

For more information, visit CUDA Binary Utilities documentation .", + "html": "Release, Deallocate and Allocate Registers

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Release, Deallocate and Allocate Registers", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "USGXT": return { - "html": "Uniform Sign Extend

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Sign Extend

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Sign Extend", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "USHF": return { - "html": "Uniform Funnel Shift

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Funnel Shift

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Funnel Shift", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "USHL": return { - "html": "Uniform Left Shift

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Left Shift

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Left Shift", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "USHR": return { - "html": "Uniform Right Shift

For more information, visit CUDA Binary Utilities documentation .", + "html": "Uniform Right Shift

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Uniform Right Shift", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "USTGR": + return { + "html": "Uniform Store to Global Memory with Release

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Store to Global Memory with Release", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCATOMSWS": + return { + "html": "Perform Atomic operation on SW State Register

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Perform Atomic operation on SW State Register", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCBAR": + return { + "html": "Tensor Core Barrier

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Tensor Core Barrier", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCCP": + return { + "html": "Asynchonous data copy from Shared Memory to Tensor Memory

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Asynchonous data copy from Shared Memory to Tensor Memory", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCHMMA": + return { + "html": "Uniform Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Matrix Multiply and Accumulate", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCIMMA": + return { + "html": "Uniform Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Matrix Multiply and Accumulate", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCOMMA": + return { + "html": "Uniform Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Matrix Multiply and Accumulate", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCQMMA": + return { + "html": "Uniform Matrix Multiply and Accumulate

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform Matrix Multiply and Accumulate", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UTCSHIFT": + return { + "html": "Shift elements in Tensor Memory

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Shift elements in Tensor Memory", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UTMACCTL": return { - "html": "TMA Cache Control

For more information, visit CUDA Binary Utilities documentation .", + "html": "TMA Cache Control

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "TMA Cache Control", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UTMACMDFLUSH": return { - "html": "TMA Command Flush

For more information, visit CUDA Binary Utilities documentation .", + "html": "TMA Command Flush

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "TMA Command Flush", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UTMALDG": return { - "html": "Tensor Load from Global to Shared Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Tensor Load from Global to Shared Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Tensor Load from Global to Shared Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UTMAPF": return { - "html": "Tensor Prefetch

For more information, visit CUDA Binary Utilities documentation .", + "html": "Tensor Prefetch

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Tensor Prefetch", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UTMAREDG": return { - "html": "Tensor Store from Shared to Global Memory with Reduction

For more information, visit CUDA Binary Utilities documentation .", + "html": "Tensor Store from Shared to Global Memory with Reduction

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Tensor Store from Shared to Global Memory with Reduction", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "UTMASTG": return { - "html": "Tensor Store from Shared to Global Memory

For more information, visit CUDA Binary Utilities documentation .", + "html": "Tensor Store from Shared to Global Memory

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Tensor Store from Shared to Global Memory", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UVIADD": + return { + "html": "Uniform SIMD Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform SIMD Integer Addition", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UVIMNMX": + return { + "html": "Uniform SIMD Integer Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Uniform SIMD Integer Minimum / Maximum", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" + }; + + case "UVIRTCOUNT": + return { + "html": "Virtual Resource Management

For more information, visit CUDA Binary Utilities documentation .", + "tooltip": "Virtual Resource Management", + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VABSDIFF": return { - "html": "Absolute Difference

For more information, visit CUDA Binary Utilities documentation .", + "html": "Absolute Difference

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Absolute Difference", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VABSDIFF4": return { - "html": "Absolute Difference

For more information, visit CUDA Binary Utilities documentation .", + "html": "Absolute Difference

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Absolute Difference", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VHMNMX": return { - "html": "SIMD FP16 3-Input Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "html": "SIMD FP16 3-Input Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "SIMD FP16 3-Input Minimum / Maximum", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VIADD": return { - "html": "SIMD Integer Addition

For more information, visit CUDA Binary Utilities documentation .", + "html": "SIMD Integer Addition

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "SIMD Integer Addition", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VIADDMNMX": return { - "html": "SIMD Integer Addition and Fused Min/Max Comparison

For more information, visit CUDA Binary Utilities documentation .", + "html": "SIMD Integer Addition and Fused Min/Max Comparison

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "SIMD Integer Addition and Fused Min/Max Comparison", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VIMNMX": return { - "html": "SIMD Integer Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "html": "SIMD Integer Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "SIMD Integer Minimum / Maximum", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VIMNMX3": return { - "html": "SIMD Integer 3-Input Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", + "html": "SIMD Integer 3-Input Minimum / Maximum

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "SIMD Integer 3-Input Minimum / Maximum", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VOTE": return { - "html": "Vote Across SIMT Thread Group

For more information, visit CUDA Binary Utilities documentation .", + "html": "Vote Across SIMT Thread Group

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Vote Across SIMT Thread Group", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "VOTEU": return { - "html": "Voting across SIMD Thread Group with Results in Uniform Destination

For more information, visit CUDA Binary Utilities documentation .", + "html": "Voting across SIMD Thread Group with Results in Uniform Destination

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Voting across SIMD Thread Group with Results in Uniform Destination", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "WARPGROUP": return { - "html": "Warpgroup Synchronization

For more information, visit CUDA Binary Utilities documentation .", + "html": "Warpgroup Synchronization

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Warpgroup Synchronization", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "WARPGROUPSET": return { - "html": "Set Warpgroup Counters

For more information, visit CUDA Binary Utilities documentation .", + "html": "Set Warpgroup Counters

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Set Warpgroup Counters", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "WARPSYNC": return { - "html": "Synchronize Threads in Warp

For more information, visit CUDA Binary Utilities documentation .", + "html": "Synchronize Threads in Warp

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Synchronize Threads in Warp", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "XMAD": return { - "html": "Integer Short Multiply Add

For more information, visit CUDA Binary Utilities documentation .", + "html": "Integer Short Multiply Add

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Integer Short Multiply Add", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; case "YIELD": return { - "html": "Yield Control

For more information, visit CUDA Binary Utilities documentation .", + "html": "Yield Control

For more information, visit CUDA Binary Utilities documentation .", "tooltip": "Yield Control", - "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14" + "url": "https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference" }; diff --git a/lib/base-compiler.ts b/lib/base-compiler.ts index f5d55bdcd..df51c8682 100644 --- a/lib/base-compiler.ts +++ b/lib/base-compiler.ts @@ -217,6 +217,7 @@ export class BaseCompiler { labelNames: [], }); protected executionEnvironmentClass: any; + protected readonly argParser: BaseParser; constructor(compilerInfo: PreliminaryCompilerInfo & {disabledFilters?: string[]}, env: CompilationEnvironment) { // Information about our compiler @@ -306,6 +307,7 @@ export class BaseCompiler { } this.packager = new Packager(); + this.argParser = new (this.getArgumentParserClass())(this); } copyAndFilterLibraries(allLibraries: Record, filter: string[]) { @@ -715,6 +717,9 @@ export class BaseCompiler { if (gccDumpOptions.dumpFlags.address !== false) { flags += '-address'; } + if (gccDumpOptions.dumpFlags.alias !== false) { + flags += '-alias'; + } if (gccDumpOptions.dumpFlags.slim !== false) { flags += '-slim'; } @@ -3595,8 +3600,7 @@ but nothing was dumped. Possible causes are: async getTargetsAsOverrideValues(): Promise { if (!this.buildenvsetup || !this.buildenvsetup.getCompilerArch()) { - const parserCls = this.getArgumentParserClass(); - const targets = await parserCls.getPossibleTargets(this); + const targets = await this.argParser.getPossibleTargets(); return targets.map(target => { return { @@ -3609,8 +3613,7 @@ but nothing was dumped. Possible causes are: } async getPossibleStdversAsOverrideValues(): Promise { - const parser = this.getArgumentParserClass(); - return await parser.getPossibleStdvers(this); + return await this.argParser.getPossibleStdvers(); } async populatePossibleRuntimeTools() { @@ -3791,7 +3794,7 @@ but nothing was dumped. Possible causes are: } return this; } - const initResult = await this.getArgumentParserClass().parse(this); + const initResult = await this.argParser.parse(); this.possibleArguments.possibleArguments = {}; await this.populatePossibleOverrides(); diff --git a/lib/cfg/cfg-parsers/python.ts b/lib/cfg/cfg-parsers/python.ts index e77a28985..854f73c21 100644 --- a/lib/cfg/cfg-parsers/python.ts +++ b/lib/cfg/cfg-parsers/python.ts @@ -40,11 +40,17 @@ export class PythonCFGParser extends BaseCFGParser { return x.startsWith('Disassembly of'); } - override isBasicBlockEnd(inst: string, prevInst: string) { + private isJmpTarget(inst: string) { if (inst.includes('>>')) - // jmp target + // for python <= 3.12 return true; + // for python 3.13: 'label' lines look like ` 8 L4: LOAD_GLOBAL 1 (print + NULL)` + return inst.match(/^\s*\d+\s*L\d+:/); + } + + override isBasicBlockEnd(inst: string, prevInst: string) { // Probably applicable to non-python CFGs too: + if (this.isJmpTarget(inst)) return true; return this.instructionSetInfo.getInstructionType(prevInst) !== InstructionType.notRetInst; } diff --git a/lib/compiler-finder.ts b/lib/compiler-finder.ts index f33f754a1..9cfda2316 100644 --- a/lib/compiler-finder.ts +++ b/lib/compiler-finder.ts @@ -562,7 +562,9 @@ export class CompilerFinder { } } if (error) { - assert(false); + logger.error( + 'Note there are orphaned compiler properties, please fix them unless you are doing this on purpose', + ); } } diff --git a/lib/compilers/_all.ts b/lib/compilers/_all.ts index de2579e23..5ac22709c 100644 --- a/lib/compilers/_all.ts +++ b/lib/compilers/_all.ts @@ -50,6 +50,7 @@ export {CleanCompiler} from './clean.js'; export {CLSPVCompiler} from './clspv.js'; export {CMakeScriptCompiler} from './cmakescript.js'; export {CoccinelleCCompiler, CoccinelleCPlusPlusCompiler} from './coccinelle.js'; +export {CodonCompiler} from './codon.js'; export {CompCertCompiler} from './compcert.js'; export {CppFrontCompiler} from './cppfront.js'; export {CprocCompiler} from './cproc.js'; diff --git a/lib/compilers/argument-parsers.ts b/lib/compilers/argument-parsers.ts index d337978d5..7e43089b3 100644 --- a/lib/compilers/argument-parsers.ts +++ b/lib/compilers/argument-parsers.ts @@ -24,7 +24,6 @@ import fs from 'node:fs/promises'; import path from 'node:path'; -import process from 'node:process'; import * as Sentry from '@sentry/node'; import _ from 'underscore'; @@ -39,32 +38,22 @@ import * as utils from '../utils.js'; import {JuliaCompiler} from './julia.js'; export class BaseParser { - static setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) {} + protected readonly compiler: BaseCompiler; - static hasSupport(options: Record, forOption: string) { + constructor(compiler: BaseCompiler) { + this.compiler = compiler; + } + async setCompilerSettingsFromOptions(options: Record) {} + + hasSupport(options: Record, forOption: string) { return _.keys(options).find(option => option.includes(forOption)); } - static hasSupportStartsWith(options: Record, forOption: string) { + hasSupportStartsWith(options: Record, forOption: string) { return _.keys(options).find(option => option.startsWith(forOption)); } - static getExamplesRoot(): string { - return props.get('builtin', 'sourcePath', './examples/'); - } - - static getDefaultExampleFilename() { - return 'c++/default.cpp'; - } - - static getExampleFilepath(): string { - let filename = path.join(this.getExamplesRoot(), this.getDefaultExampleFilename()); - if (!path.isAbsolute(filename)) filename = path.join(process.cwd(), filename); - - return filename; - } - - static parseLines(stdout: string, optionWithDescRegex: RegExp, optionWithoutDescRegex?: RegExp) { + parseLines(stdout: string, optionWithDescRegex: RegExp, optionWithoutDescRegex?: RegExp) { let previousOption: false | string = false; const options: Record = {}; @@ -116,105 +105,113 @@ export class BaseParser { return options; } - static spaceCompress(text: string): string { + spaceCompress(text: string): string { return text.replaceAll(' ', ' '); } - static async getPossibleTargets(compiler: BaseCompiler): Promise { + async getPossibleTargets(): Promise { return []; } - static async getPossibleStdvers(compiler: BaseCompiler): Promise { + async getPossibleStdvers(): Promise { return []; } // Currently used only for Rust - static async getPossibleEditions(compiler: BaseCompiler): Promise { + async getPossibleEditions(): Promise { return []; } - static async getOptions(compiler: BaseCompiler, helpArg: string) { + // Currently used only for TableGen + async getPossibleActions(): Promise { + return []; + } + + async getOptions(helpArg: string) { const optionFinder1 = /^ *(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*) {2,}(.*)/i; const optionFinder2 = /^ *(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, [helpArg]); const options = result.code === 0 ? this.parseLines(result.stdout + result.stderr, optionFinder1, optionFinder2) : {}; - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } // async for compatibility with children, who call getOptions - static async parse(compiler: BaseCompiler) { - return compiler; + async parse() { + return this.compiler; } } export class GCCParser extends BaseParser { - static async checkAndSetMasmIntelIfSupported(compiler: BaseCompiler) { + async checkAndSetMasmIntelIfSupported() { // -masm= may be available but unsupported by the compiler. - const res = await compiler.execCompilerCached(compiler.compiler.exe, [ + const res = await this.compiler.execCompilerCached(this.compiler.compiler.exe, [ '-fsyntax-only', '--target-help', '-masm=intel', ]); if (res.code === 0) { - compiler.compiler.intelAsm = '-masm=intel'; - compiler.compiler.supportsIntel = true; + this.compiler.compiler.intelAsm = '-masm=intel'; + this.compiler.compiler.supportsIntel = true; } } - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { + override async setCompilerSettingsFromOptions(options: Record) { const keys = _.keys(options); logger.debug(`gcc-like compiler options: ${keys.join(' ')}`); if (this.hasSupport(options, '-masm=')) { - await this.checkAndSetMasmIntelIfSupported(compiler); + await this.checkAndSetMasmIntelIfSupported(); } if (this.hasSupport(options, '-fstack-usage')) { - compiler.compiler.stackUsageArg = '-fstack-usage'; - compiler.compiler.supportsStackUsageOutput = true; + this.compiler.compiler.stackUsageArg = '-fstack-usage'; + this.compiler.compiler.supportsStackUsageOutput = true; } if (this.hasSupport(options, '-fdiagnostics-color')) { - if (compiler.compiler.options) compiler.compiler.options += ' '; - compiler.compiler.options += '-fdiagnostics-color=always'; + if (this.compiler.compiler.options) this.compiler.compiler.options += ' '; + this.compiler.compiler.options += '-fdiagnostics-color=always'; } if (this.hasSupport(options, '-fverbose-asm')) { - compiler.compiler.supportsVerboseAsm = true; + this.compiler.compiler.supportsVerboseAsm = true; } if (this.hasSupport(options, '-fopt-info')) { - compiler.compiler.optArg = '-fopt-info-all=all.opt'; - compiler.compiler.supportsOptOutput = true; + this.compiler.compiler.optArg = '-fopt-info-all=all.opt'; + this.compiler.compiler.supportsOptOutput = true; } // This check is not infallible, but takes care of Rust and Swift being picked up :) if (_.find(keys, key => key.startsWith('-fdump-'))) { - compiler.compiler.supportsGccDump = true; + this.compiler.compiler.supportsGccDump = true; // By default, consider the compiler to be a regular GCC (eg. gcc, // g++) and do the extra work of filtering out enabled pass that did // not produce anything. - compiler.compiler.removeEmptyGccDump = true; + this.compiler.compiler.removeEmptyGccDump = true; } - if (this.hasSupportStartsWith(options, '-march=')) compiler.compiler.supportsMarch = true; - if (this.hasSupportStartsWith(options, '--target=')) compiler.compiler.supportsTargetIs = true; - if (this.hasSupportStartsWith(options, '--target ')) compiler.compiler.supportsTarget = true; + if (this.hasSupportStartsWith(options, '-march=')) this.compiler.compiler.supportsMarch = true; + if (this.hasSupportStartsWith(options, '--target=')) this.compiler.compiler.supportsTargetIs = true; + if (this.hasSupportStartsWith(options, '--target ')) this.compiler.compiler.supportsTarget = true; } - static override async parse(compiler: BaseCompiler) { + override async parse() { const results = await Promise.all([ - this.getOptions(compiler, '-fsyntax-only --help'), - this.getOptions(compiler, '-fsyntax-only --target-help'), - this.getOptions(compiler, '-fsyntax-only --help=common'), - this.getOptions(compiler, '-fsyntax-only --help=warnings'), - this.getOptions(compiler, '-fsyntax-only --help=optimizers'), - this.getOptions(compiler, '-fsyntax-only --help=target'), + this.getOptions('-fsyntax-only --help'), + this.getOptions('-fsyntax-only --target-help'), + this.getOptions('-fsyntax-only --help=common'), + this.getOptions('-fsyntax-only --help=warnings'), + this.getOptions('-fsyntax-only --help=optimizers'), + this.getOptions('-fsyntax-only --help=target'), ]); const options = Object.assign({}, ...results); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getPossibleTargets(compiler: BaseCompiler): Promise { + override async getPossibleTargets(): Promise { const re = /Known valid arguments for -march= option:\s+(.*)/; - const result = await compiler.execCompilerCached(compiler.compiler.exe, ['-fsyntax-only', '--target-help']); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, [ + '-fsyntax-only', + '--target-help', + ]); const match = result.stdout.match(re); if (match) { return match[1].split(' '); @@ -222,13 +219,13 @@ export class GCCParser extends BaseParser { return []; } - static getLanguageSpecificHelpFlags(): string[] { + getLanguageSpecificHelpFlags(): string[] { return ['-fsyntax-only', '--help=c++']; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { + override async getPossibleStdvers(): Promise { const possible: CompilerOverrideOptions = []; - const options = await this.getOptionsStrict(compiler, this.getLanguageSpecificHelpFlags()); + const options = await this.getOptionsStrict(this.getLanguageSpecificHelpFlags()); for (const opt in options) { if (opt.startsWith('-std=') && !options[opt].description?.startsWith('Deprecated')) { const stdver = opt.substring(5); @@ -241,57 +238,57 @@ export class GCCParser extends BaseParser { return possible; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder1 = /^ *(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*) {2,}(.*)/i; const optionFinder2 = /^ *(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' ')); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, splitArguments(helpArg)); const options = result.code === 0 ? this.parseLines(result.stdout + result.stderr, optionFinder1, optionFinder2) : {}; - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } - static async getOptionsStrict(compiler: BaseCompiler, helpArgs: string[]) { + async getOptionsStrict(helpArgs: string[]) { const optionFinder = /^ {2}(--?[\d+,<=>[\]a-z|-]*) *(.*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArgs); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, helpArgs); return result.code === 0 ? this.parseLines(result.stdout + result.stderr, optionFinder) : {}; } } export class ClangParser extends BaseParser { - static mllvmOptions = new Set(); + mllvmOptions = new Set(); - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { + override async setCompilerSettingsFromOptions(options: Record) { const keys = _.keys(options); logger.debug(`clang-like compiler options: ${keys.join(' ')}`); if (keys.length === 0) { - logger.error(`compiler options appear empty for ${compiler.compiler.id}`); + logger.error(`compiler options appear empty for ${this.compiler.compiler.id}`); } if (this.hasSupport(options, '-fsave-optimization-record')) { - compiler.compiler.optArg = '-fsave-optimization-record'; - compiler.compiler.supportsOptOutput = true; + this.compiler.compiler.optArg = '-fsave-optimization-record'; + this.compiler.compiler.supportsOptOutput = true; } if (this.hasSupport(options, '-fstack-usage')) { - compiler.compiler.stackUsageArg = '-fstack-usage'; - compiler.compiler.supportsStackUsageOutput = true; + this.compiler.compiler.stackUsageArg = '-fstack-usage'; + this.compiler.compiler.supportsStackUsageOutput = true; } if (this.hasSupport(options, '-fverbose-asm')) { - compiler.compiler.supportsVerboseAsm = true; + this.compiler.compiler.supportsVerboseAsm = true; } if (this.hasSupport(options, '-emit-llvm')) { - compiler.compiler.supportsIrView = true; - compiler.compiler.irArg = ['-Xclang', '-emit-llvm', '-fsyntax-only']; - compiler.compiler.minIrArgs = ['-emit-llvm']; + this.compiler.compiler.supportsIrView = true; + this.compiler.compiler.irArg = ['-Xclang', '-emit-llvm', '-fsyntax-only']; + this.compiler.compiler.minIrArgs = ['-emit-llvm']; } // if (this.hasSupport(options, '-emit-cir')) { // #7265: clang-trunk supposedly has '-emit-cir', but it's not doing much. Checking explicitly // for clangir in the compiler name instead. - if (compiler.compiler.name?.includes('clangir')) { - compiler.compiler.supportsClangirView = true; + if (this.compiler.compiler.name?.includes('clangir')) { + this.compiler.compiler.supportsClangirView = true; } if ( @@ -299,61 +296,60 @@ export class ClangParser extends BaseParser { this.mllvmOptions.has('--print-before-all') && this.mllvmOptions.has('--print-after-all') ) { - compiler.compiler.optPipeline = { + this.compiler.compiler.optPipeline = { arg: ['-mllvm', '--print-before-all', '-mllvm', '--print-after-all'], moduleScopeArg: [], noDiscardValueNamesArg: [], }; if (this.mllvmOptions.has('--print-module-scope')) { - compiler.compiler.optPipeline.moduleScopeArg = ['-mllvm', '-print-module-scope']; + this.compiler.compiler.optPipeline.moduleScopeArg = ['-mllvm', '-print-module-scope']; } if (this.hasSupport(options, '-fno-discard-value-names')) { - compiler.compiler.optPipeline.noDiscardValueNamesArg = ['-fno-discard-value-names']; + this.compiler.compiler.optPipeline.noDiscardValueNamesArg = ['-fno-discard-value-names']; } } - if (this.hasSupport(options, '-fcolor-diagnostics')) compiler.compiler.options += ' -fcolor-diagnostics'; - if (this.hasSupport(options, '-fno-crash-diagnostics')) compiler.compiler.options += ' -fno-crash-diagnostics'; + if (this.hasSupport(options, '-fcolor-diagnostics')) this.compiler.compiler.options += ' -fcolor-diagnostics'; + if (this.hasSupport(options, '-fno-crash-diagnostics')) + this.compiler.compiler.options += ' -fno-crash-diagnostics'; - if (this.hasSupportStartsWith(options, '--target=')) compiler.compiler.supportsTargetIs = true; - if (this.hasSupportStartsWith(options, '--target ')) compiler.compiler.supportsTarget = true; + if (this.hasSupportStartsWith(options, '--target=')) this.compiler.compiler.supportsTargetIs = true; + if (this.hasSupportStartsWith(options, '--target ')) this.compiler.compiler.supportsTarget = true; } - static getMainHelpOptions(): string[] { + getMainHelpOptions(): string[] { return ['--help']; } - static getHiddenHelpOptions(exampleFile: string): string[] { - return ['-mllvm', '--help-list-hidden', exampleFile, '-c']; + getHiddenHelpOptions(): string[] { + return ['-mllvm', '--help-list-hidden', '-x', 'c++', '/dev/null', '-c']; } - static getStdVersHelpOptions(exampleFile: string): string[] { - return ['-std=c++9999999', exampleFile, '-c']; + getStdVersHelpOptions(): string[] { + return ['-std=c++9999999', '-x', 'c++', '/dev/null', '-c']; } - static getTargetsHelpOptions(): string[] { + getTargetsHelpOptions(): string[] { return ['--print-targets']; } - static override async parse(compiler: BaseCompiler) { + override async parse() { try { - const options = await this.getOptions(compiler, this.getMainHelpOptions().join(' ')); - - const filename = this.getExampleFilepath(); + const options = await this.getOptions(this.getMainHelpOptions().join(' ')); this.mllvmOptions = new Set( - _.keys(await this.getOptions(compiler, this.getHiddenHelpOptions(filename).join(' '), false, true)), + _.keys(await this.getOptions(this.getHiddenHelpOptions().join(' '), false, true)), ); - this.setCompilerSettingsFromOptions(compiler, options); + await this.setCompilerSettingsFromOptions(options); } catch (error) { - const err = `Error while trying to generate llvm backend arguments for ${compiler.compiler.id}: ${error}`; + const err = `Error while trying to generate llvm backend arguments for ${this.compiler.compiler.id}: ${error}`; logger.error(err); Sentry.captureMessage(err); } - return compiler; + return this.compiler; } - static getRegexMatchesAsStdver(match: RegExpMatchArray | null, maxToMatch: number): CompilerOverrideOptions { + getRegexMatchesAsStdver(match: RegExpMatchArray | null, maxToMatch: number): CompilerOverrideOptions { if (!match) return []; if (!match[maxToMatch]) return []; @@ -371,7 +367,7 @@ export class ClangParser extends BaseParser { return arr; } - static extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { + extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { const possible: CompilerOverrideOptions = []; const re1 = /note: use '([\w+:]*)' for '(.*)' standard/; const re2 = /note: use '([\w+:]*)' or '([\w+:]*)' for '(.*)' standard/; @@ -400,16 +396,17 @@ export class ClangParser extends BaseParser { return possible; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { + override async getPossibleStdvers(): Promise { let possible: CompilerOverrideOptions = []; - // clang doesn't have a --help option to get the std versions, we'll have to compile with a fictional stdversion to coax a response - const filename = this.getExampleFilepath(); - - const result = await compiler.execCompilerCached(compiler.compiler.exe, this.getStdVersHelpOptions(filename), { - ...compiler.getDefaultExecOptions(), - createAndUseTempDir: true, - }); + const result = await this.compiler.execCompilerCached( + this.compiler.compiler.exe, + this.getStdVersHelpOptions(), + { + ...this.compiler.getDefaultExecOptions(), + createAndUseTempDir: true, + }, + ); if (result.stderr) { const lines = utils.splitLines(result.stderr); @@ -422,7 +419,7 @@ export class ClangParser extends BaseParser { return possible; } - static extractPossibleTargets(lines: string[]): string[] { + extractPossibleTargets(lines: string[]): string[] { const re = /\s+([\w-]*)\s*-\s.*/; return lines .map(line => { @@ -435,31 +432,35 @@ export class ClangParser extends BaseParser { .filter(Boolean) as string[]; } - static override async getPossibleTargets(compiler: BaseCompiler): Promise { - const result = await compiler.execCompilerCached(compiler.compiler.exe, this.getTargetsHelpOptions()); + override async getPossibleTargets(): Promise { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, this.getTargetsHelpOptions()); return this.extractPossibleTargets(utils.splitLines(result.stdout)); } - static override async getOptions(compiler: BaseCompiler, helpArg: string, populate = true, isolate = false) { + override async getOptions(helpArg: string, populate = true, isolate = false) { const optionFinderWithDesc = /^ {2}?(--?[\d#+,<=>A-Z[\]a-z|-]*\s?[\d+,<=>A-Z[\]a-z|-]*)\s+([A-Z].*)/; const optionFinderWithoutDesc = /^ {2}?(--?[\d#+,<=>[\]a-z|-]*\s?[\d+,<=>[\]a-z|-]*)/i; - const execOptions = {...compiler.getDefaultExecOptions()}; + const execOptions = {...this.compiler.getDefaultExecOptions()}; if (isolate) execOptions.createAndUseTempDir = true; - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' '), execOptions); + const result = await this.compiler.execCompilerCached( + this.compiler.compiler.exe, + splitArguments(helpArg), + execOptions, + ); const options = result.code === 0 ? this.parseLines(result.stdout + result.stderr, optionFinderWithDesc, optionFinderWithoutDesc) : {}; - if (populate) compiler.possibleArguments.populateOptions(options); + if (populate) this.compiler.possibleArguments.populateOptions(options); return options; } } export class ClangirParser extends ClangParser { - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { - ClangParser.setCompilerSettingsFromOptions(compiler, options); + override async setCompilerSettingsFromOptions(options: Record) { + await super.setCompilerSettingsFromOptions(options); - compiler.compiler.optPipeline = { + this.compiler.compiler.optPipeline = { arg: [], moduleScopeArg: ['-mmlir', '--mlir-print-ir-before-all', '-mmlir', '--mlir-print-ir-after-all'], noDiscardValueNamesArg: [], @@ -476,39 +477,31 @@ export class ClangirParser extends ClangParser { } export class GCCCParser extends GCCParser { - static override getLanguageSpecificHelpFlags(): string[] { + override getLanguageSpecificHelpFlags(): string[] { return ['-fsyntax-only', '--help=c']; } - - static override getDefaultExampleFilename() { - return 'c/default.c'; - } } export class ClangCParser extends ClangParser { - static override getDefaultExampleFilename() { - return 'c/default.c'; - } - - static override getStdVersHelpOptions(exampleFile: string): string[] { - return ['-std=c9999999', exampleFile, '-c']; + override getStdVersHelpOptions(): string[] { + return ['-std=c9999999', '-x', 'c', '/dev/null', '-c']; } } export class CircleParser extends ClangParser { - static override async getOptions(compiler: BaseCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder1 = /^ +(--?[\w#,.<=>[\]|-]*) {2,}- (.*)/i; const optionFinder2 = /^ +(--?[\w#,.<=>[\]|-]*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' ')); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, splitArguments(helpArg)); const options = result.code === 0 ? this.parseLines(result.stdout, optionFinder1, optionFinder2) : {}; - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { + override async getPossibleStdvers(): Promise { const possible: CompilerOverrideOptions = []; const optionFinder = /^ {4}=([\w+]*) +- +(.*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, ['--help']); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, ['--help']); let isInStdVerSection = false; for (const line of utils.splitLines(result.stdout)) { if (!isInStdVerSection && line.startsWith(' --std=')) { @@ -536,101 +529,101 @@ export class CircleParser extends ClangParser { } export class LDCParser extends BaseParser { - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { + override async setCompilerSettingsFromOptions(options: Record) { if (this.hasSupport(options, '--fsave-optimization-record')) { - compiler.compiler.optArg = '--fsave-optimization-record'; - compiler.compiler.supportsOptOutput = true; + this.compiler.compiler.optArg = '--fsave-optimization-record'; + this.compiler.compiler.supportsOptOutput = true; } if (this.hasSupport(options, '-fverbose-asm')) { - compiler.compiler.supportsVerboseAsm = true; + this.compiler.compiler.supportsVerboseAsm = true; } if (this.hasSupport(options, '--print-before-all') && this.hasSupport(options, '--print-after-all')) { - compiler.compiler.optPipeline = { + this.compiler.compiler.optPipeline = { arg: ['--print-before-all', '--print-after-all'], moduleScopeArg: [], noDiscardValueNamesArg: [], }; if (this.hasSupport(options, '--print-module-scope')) { - compiler.compiler.optPipeline.moduleScopeArg = ['--print-module-scope']; + this.compiler.compiler.optPipeline.moduleScopeArg = ['--print-module-scope']; } if (this.hasSupport(options, '--fno-discard-value-names')) { - compiler.compiler.optPipeline.noDiscardValueNamesArg = ['--fno-discard-value-names']; + this.compiler.compiler.optPipeline.noDiscardValueNamesArg = ['--fno-discard-value-names']; } } if (this.hasSupport(options, '--enable-color')) { - compiler.compiler.options += ' --enable-color'; + this.compiler.compiler.options += ' --enable-color'; } } - static override async parse(compiler: BaseCompiler) { - const options = await this.getOptions(compiler, '--help-hidden'); - this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + override async parse() { + const options = await this.getOptions('--help-hidden'); + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getOptions(compiler: BaseCompiler, helpArg: string, populate = true) { + override async getOptions(helpArg: string, populate = true) { const optionFinder = /^\s*(--?[\d+,<=>[\]a-z|-]*)\s*(.*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' ')); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, splitArguments(helpArg)); const options = result.code === 0 ? this.parseLines(result.stdout + result.stderr, optionFinder) : {}; if (populate) { - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); } return options; } } export class ElixirParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '--help'); - return compiler; + override async parse() { + await this.getOptions('--help'); + return this.compiler; } } export class ErlangParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class PascalParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class MojoParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class ICCParser extends GCCParser { - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { + override async setCompilerSettingsFromOptions(options: Record) { const keys = _.keys(options); if (this.hasSupport(options, '-masm=')) { - compiler.compiler.intelAsm = '-masm=intel'; - compiler.compiler.supportsIntel = true; + this.compiler.compiler.intelAsm = '-masm=intel'; + this.compiler.compiler.supportsIntel = true; } if (this.hasSupport(options, '-fdiagnostics-color')) { - if (compiler.compiler.options) compiler.compiler.options += ' '; - compiler.compiler.options += '-fdiagnostics-color=always'; + if (this.compiler.compiler.options) this.compiler.compiler.options += ' '; + this.compiler.compiler.options += '-fdiagnostics-color=always'; } if (_.find(keys, key => key.startsWith('-fdump-'))) { - compiler.compiler.supportsGccDump = true; - compiler.compiler.removeEmptyGccDump = true; + this.compiler.compiler.supportsGccDump = true; + this.compiler.compiler.removeEmptyGccDump = true; } - if (this.hasSupportStartsWith(options, '-march=')) compiler.compiler.supportsMarch = true; - if (this.hasSupportStartsWith(options, '--target=')) compiler.compiler.supportsTargetIs = true; - if (this.hasSupportStartsWith(options, '--target ')) compiler.compiler.supportsTarget = true; + if (this.hasSupportStartsWith(options, '-march=')) this.compiler.compiler.supportsMarch = true; + if (this.hasSupportStartsWith(options, '--target=')) this.compiler.compiler.supportsTargetIs = true; + if (this.hasSupportStartsWith(options, '--target ')) this.compiler.compiler.supportsTarget = true; } - static extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { + extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { const stdverRe = /-std=/; const descRe = /^\s{12}([\w+]*)\s+(.*)/; const possible: CompilerOverrideOptions = []; @@ -663,72 +656,72 @@ export class ICCParser extends GCCParser { return possible; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { - const result = await compiler.execCompilerCached(compiler.compiler.exe, ['--help']); + override async getPossibleStdvers(): Promise { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, ['--help']); const lines = utils.splitLines(result.stdout); return this.extractPossibleStdvers(lines); } - static override async parse(compiler: BaseCompiler) { - const results = await Promise.all([this.getOptions(compiler, '-fsyntax-only --help')]); + override async parse() { + const results = await Promise.all([this.getOptions('-fsyntax-only --help')]); const options = Object.assign({}, ...results); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } } export class ISPCParser extends BaseParser { - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { + override async setCompilerSettingsFromOptions(options: Record) { if (this.hasSupport(options, '--x86-asm-syntax')) { - compiler.compiler.intelAsm = '--x86-asm-syntax=intel'; - compiler.compiler.supportsIntel = true; + this.compiler.compiler.intelAsm = '--x86-asm-syntax=intel'; + this.compiler.compiler.supportsIntel = true; } } - static override async parse(compiler: BaseCompiler) { - const options = await this.getOptions(compiler, '--help'); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + override async parse() { + const options = await this.getOptions('--help'); + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { - const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]); + override async getOptions(helpArg: string) { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, [helpArg]); const optionFinder = /^\s*\[(--?[\d\s()+,/<=>a-z{|}-]*)]\s*(.*)/i; const options = result.code === 0 ? this.parseLines(result.stdout + result.stderr, optionFinder) : {}; - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } } export class JavaParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class KotlinParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class ScalaParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class VCParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '/help'); - return compiler; + override async parse() { + await this.getOptions('/help'); + return this.compiler; } - static override parseLines(stdout: string, optionRegex: RegExp) { + override parseLines(stdout: string, optionRegex: RegExp) { let previousOption: string | false = false; const options: Record = {}; @@ -782,7 +775,7 @@ export class VCParser extends BaseParser { return options; } - static extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { + extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { const stdverRe = /\/std:<(.*)>\s.*/; const descRe = /(c\+\+.*) - (.*)/; const possible: CompilerOverrideOptions = []; @@ -812,45 +805,45 @@ export class VCParser extends BaseParser { return possible; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { - const result = await compiler.execCompilerCached(compiler.compiler.exe, ['/help']); + override async getPossibleStdvers(): Promise { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, ['/help']); const lines = utils.splitLines(result.stdout); return this.extractPossibleStdvers(lines); } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { - const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]); + override async getOptions(helpArg: string) { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, [helpArg]); const optionFinder = /^\s*(\/[\w#+,.:<=>[\]{|}-]*)\s*(.*)/i; const options = result.code === 0 ? this.parseLines(result.stdout, optionFinder) : {}; - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } } export class RustParser extends BaseParser { - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { + override async setCompilerSettingsFromOptions(options: Record) { if (this.hasSupport(options, '--color')) { - if (compiler.compiler.options) compiler.compiler.options += ' '; - compiler.compiler.options += '--color=always'; + if (this.compiler.compiler.options) this.compiler.compiler.options += ' '; + this.compiler.compiler.options += '--color=always'; } - if (this.hasSupportStartsWith(options, '--target=')) compiler.compiler.supportsTargetIs = true; - if (this.hasSupportStartsWith(options, '--target ')) compiler.compiler.supportsTarget = true; + if (this.hasSupportStartsWith(options, '--target=')) this.compiler.compiler.supportsTargetIs = true; + if (this.hasSupportStartsWith(options, '--target ')) this.compiler.compiler.supportsTarget = true; } - static override async parse(compiler: BaseCompiler) { + override async parse() { const results = await Promise.all([ - this.getOptions(compiler, '--help'), - this.getOptions(compiler, '-C help'), - this.getOptions(compiler, '--help -v'), + this.getOptions('--help'), + this.getOptions('-C help'), + this.getOptions('--help -v'), ]); const options = Object.assign({}, ...results); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getPossibleEditions(compiler: BaseCompiler): Promise { - const result = await compiler.execCompilerCached(compiler.compiler.exe, ['--help', '-v']); + override async getPossibleEditions(): Promise { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, ['--help', '-v']); const re = /--edition ?/; const match = result.stdout.match(re); @@ -861,12 +854,12 @@ export class RustParser extends BaseParser { return []; } - static override async getPossibleTargets(compiler: BaseCompiler): Promise { - const result = await compiler.execCompilerCached(compiler.compiler.exe, ['--print', 'target-list']); + override async getPossibleTargets(): Promise { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, ['--print', 'target-list']); return utils.splitLines(result.stdout).filter(Boolean); } - static parseRustHelpLines(stdout: string) { + parseRustHelpLines(stdout: string) { let previousOption: false | string = false; const options: Record = {}; @@ -916,8 +909,8 @@ export class RustParser extends BaseParser { return options; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' ')); + override async getOptions(helpArg: string) { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, splitArguments(helpArg)); let options = {}; if (result.code === 0) { if (helpArg === '-C help') { @@ -928,62 +921,62 @@ export class RustParser extends BaseParser { options = this.parseRustHelpLines(result.stdout + result.stderr); } } - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } } export class ZksolcParser extends RustParser { - static override async parse(compiler: BaseCompiler) { - const options = await this.getOptions(compiler, '--help'); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + override async parse() { + const options = await this.getOptions('--help'); + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } } export class SolxParser extends RustParser { - static override async parse(compiler: BaseCompiler) { - const options = await this.getOptions(compiler, '--help'); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + override async parse() { + const options = await this.getOptions('--help'); + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } } export class MrustcParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '--help'); - return compiler; + override async parse() { + await this.getOptions('--help'); + return this.compiler; } } export class C2RustParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await C2RustParser.getOptions(compiler, '--help'); - return compiler; + override async parse() { + await this.getOptions('--help'); + return this.compiler; } } export class NimParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class CrystalParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, 'build'); - return compiler; + override async parse() { + await this.getOptions('build'); + return this.compiler; } } export class TableGenParser extends BaseParser { - static async getPossibleActions(compiler: BaseCompiler): Promise { - const result = await compiler.execCompilerCached(compiler.compiler.exe, ['--help']); + override async getPossibleActions(): Promise { + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, ['--help']); return this.extractPossibleActions(utils.splitLines(result.stdout)); } - static extractPossibleActions(lines: string[]): CompilerOverrideOptions { + extractPossibleActions(lines: string[]): CompilerOverrideOptions { const actions: CompilerOverrideOptions = []; let found_actions = false; @@ -1013,48 +1006,49 @@ export class TableGenParser extends BaseParser { } export class TypeScriptNativeParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '--help'); - return compiler; + override async parse() { + await this.getOptions('--help'); + return this.compiler; } } export class TurboCParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, ''); - return compiler; + override async parse() { + await this.getOptions(''); + return this.compiler; } } export class ToitParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '-help'); - return compiler; + override async parse() { + await this.getOptions('-help'); + return this.compiler; } } export class JuliaParser extends BaseParser { // Get help line from wrapper not Julia runtime - static override async getOptions(compiler: JuliaCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder = /^\s*(--?[\d+,<=>[\]a-z|-]*)\s*(.*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, [ - compiler.compilerWrapperPath, + const juliaCompiler = this.compiler as JuliaCompiler; + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, [ + juliaCompiler.compilerWrapperPath, helpArg, ]); const options = result.code === 0 ? this.parseLines(result.stdout + result.stderr, optionFinder) : {}; - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } - static override async parse(compiler: JuliaCompiler) { - await this.getOptions(compiler, '--help'); - return compiler; + override async parse() { + await this.getOptions('--help'); + return this.compiler; } } export class Z88dkParser extends BaseParser { - static override async getPossibleTargets(compiler: BaseCompiler): Promise { - const configPath = path.join(path.dirname(compiler.compiler.exe), '../share/z88dk/lib/config'); + override async getPossibleTargets(): Promise { + const configPath = path.join(path.dirname(this.compiler.compiler.exe), '../share/z88dk/lib/config'); const targets: string[] = []; const dir = await fs.readdir(configPath); for (const filename of dir) { @@ -1067,79 +1061,71 @@ export class Z88dkParser extends BaseParser { } export class WasmtimeParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '--help'); - return compiler; + override async parse() { + await this.getOptions('--help'); + return this.compiler; } } export class ZigParser extends GCCParser { - static override async parse(compiler: BaseCompiler) { - const results = await Promise.all([ZigParser.getOptions(compiler, 'build-obj --help')]); + override async parse() { + const results = await Promise.all([this.getOptions('build-obj --help')]); const options = Object.assign({}, ...results); - await GCCParser.setCompilerSettingsFromOptions(compiler, options); - if (GCCParser.hasSupportStartsWith(options, '-target ')) compiler.compiler.supportsHyphenTarget = true; - return compiler; + await this.setCompilerSettingsFromOptions(options); + if (this.hasSupportStartsWith(options, '-target ')) this.compiler.compiler.supportsHyphenTarget = true; + return this.compiler; } } export class ZigCxxParser extends ClangParser { - static override getMainHelpOptions(): string[] { + override getMainHelpOptions(): string[] { return ['c++', '--help']; } - static override getHiddenHelpOptions(exampleFile: string): string[] { - return ['c++', '-mllvm', '--help-list-hidden', exampleFile, '-S', '-o', '/tmp/output.s']; + override getHiddenHelpOptions(): string[] { + return ['c++', '-mllvm', '--help-list-hidden', '-x', 'c++', '/dev/null', '-S', '-o', '/tmp/output.s']; } - static override getStdVersHelpOptions(exampleFile: string): string[] { - return ['c++', '-std=c++9999999', exampleFile, '-S', '-o', '/tmp/output.s']; + override getStdVersHelpOptions(): string[] { + return ['c++', '-std=c++9999999', '-x', 'c++', '/dev/null', '-S', '-o', '/tmp/output.s']; } - static override getTargetsHelpOptions(): string[] { + override getTargetsHelpOptions(): string[] { return ['c++', '--print-targets']; } } export class GccFortranParser extends GCCParser { - static override getDefaultExampleFilename() { - return 'fortran/default.f90'; - } - - static override getLanguageSpecificHelpFlags(): string[] { + override getLanguageSpecificHelpFlags(): string[] { return ['-fsyntax-only', '--help=fortran']; } } export class FlangParser extends ClangParser { - static override getDefaultExampleFilename() { - return 'fortran/default.f90'; - } - - static override async setCompilerSettingsFromOptions(compiler: BaseCompiler, options: Record) { - super.setCompilerSettingsFromOptions(compiler, options); + override async setCompilerSettingsFromOptions(options: Record) { + await super.setCompilerSettingsFromOptions(options); // flang does not allow -emit-llvm to be used as it is with clang // as -Xflang -emit-llvm. Instead you just give -emit-llvm to flang // directly. if (this.hasSupport(options, '-emit-llvm')) { - compiler.compiler.supportsIrView = true; - compiler.compiler.irArg = ['-emit-llvm']; - compiler.compiler.minIrArgs = ['-emit-llvm']; + this.compiler.compiler.supportsIrView = true; + this.compiler.compiler.irArg = ['-emit-llvm']; + this.compiler.compiler.minIrArgs = ['-emit-llvm']; } - compiler.compiler.supportsIntel = true; - compiler.compiler.intelAsm = '-masm=intel'; + this.compiler.compiler.supportsIntel = true; + this.compiler.compiler.intelAsm = '-masm=intel'; } - static override hasSupport(options: Record, param: string) { + override hasSupport(options: Record, param: string) { // param is available but we get a warning, so lets not use it if (param === '-fcolor-diagnostics') return; - return BaseParser.hasSupport(options, param); + return super.hasSupport(options, param); } - static override extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { + override extractPossibleStdvers(lines: string[]): CompilerOverrideOptions { const possible: CompilerOverrideOptions = []; const re1 = /error: Only -std=([\w+]*) is allowed currently./; for (const line of lines) { @@ -1156,101 +1142,102 @@ export class FlangParser extends ClangParser { } export class GHCParser extends GCCParser { - static override async parse(compiler: BaseCompiler) { - const results = await Promise.all([this.getOptions(compiler, '--help')]); + override async parse() { + const results = await Promise.all([this.getOptions('--help')]); const options = Object.assign({}, ...results); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder1 = /^ {4}(-[\w[\]]+)\s+(.*)/i; const optionFinder2 = /^ {4}(-[\w[\]]+)/; - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' ')); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, splitArguments(helpArg)); const options = result.code === 0 ? this.parseLines(result.stdout, optionFinder1, optionFinder2) : {}; - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } } export class SwiftParser extends ClangParser { - static override async parse(compiler: BaseCompiler) { - const results = await Promise.all([this.getOptions(compiler, '--help')]); + override async parse() { + const results = await Promise.all([this.getOptions('--help')]); const options = Object.assign({}, ...results); - this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { + override async getPossibleStdvers(): Promise { return []; } - static override async getPossibleTargets(compiler: BaseCompiler): Promise { + override async getPossibleTargets(): Promise { return []; } } export class TendraParser extends GCCParser { - static override async parse(compiler: BaseCompiler) { - const results = await Promise.all([this.getOptions(compiler, '--help')]); + override async parse() { + const results = await Promise.all([this.getOptions('--help')]); const options = Object.assign({}, ...results); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder = /^ *(-[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*) : +(.*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' ')); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, splitArguments(helpArg)); const options = this.parseLines(result.stdout + result.stderr, optionFinder); - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { + override async getPossibleStdvers(): Promise { return []; } - static override async getPossibleTargets(compiler: BaseCompiler): Promise { + override async getPossibleTargets(): Promise { return []; } } export class GolangParser extends GCCParser { - static override getDefaultExampleFilename() { - return 'go/default.go'; - } - - static override async parse(compiler: BaseCompiler) { + override async parse() { + // NB this file _must_ be visible to the jail, if you're using one. This may bite on a local install when your + // example path may not match paths available in the jail (e.g. `/infra/.deploy/examples`) + // TODO: find a way to invoke GoLang without needing a real example Go file. + const examplesRoot = props.get('builtin', 'sourcePath', './examples/'); + const exampleFilepath = path.resolve(path.join(examplesRoot, 'go/default.go')); const results = await Promise.all([ - this.getOptions(compiler, 'build -o ./output.s "-gcflags=-S --help" ' + this.getExampleFilepath()), + this.getOptions('build -o /tmp/output.s "-gcflags=-S --help" ' + exampleFilepath), ]); const options = Object.assign({}, ...results); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder1 = /^\s*(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*)\s+(.*)/i; const optionFinder2 = /^\s*(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, splitArguments(helpArg), { - ...compiler.getDefaultExecOptions(), + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, splitArguments(helpArg), { + ...this.compiler.getDefaultExecOptions(), createAndUseTempDir: true, }); const options = this.parseLines(result.stdout + result.stderr, optionFinder1, optionFinder2); - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } } export class GnuCobolParser extends GCCParser { - static override getLanguageSpecificHelpFlags(): string[] { + override getLanguageSpecificHelpFlags(): string[] { return ['--help']; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { + override async getPossibleStdvers(): Promise { const possible: CompilerOverrideOptions = []; - const options = await this.getOptionsStrict(compiler, this.getLanguageSpecificHelpFlags()); + const options = await this.getOptionsStrict(this.getLanguageSpecificHelpFlags()); for (const opt in options) { if (opt.startsWith('-std=')) { const vers = options[opt].description @@ -1272,43 +1259,43 @@ export class GnuCobolParser extends GCCParser { } export class MadpascalParser extends GCCParser { - static override async parse(compiler: BaseCompiler) { - const results = await Promise.all([this.getOptions(compiler, '')]); + override async parse() { + const results = await Promise.all([this.getOptions('')]); const options = Object.assign({}, ...results); - await this.setCompilerSettingsFromOptions(compiler, options); - return compiler; + await this.setCompilerSettingsFromOptions(options); + return this.compiler; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder = /^(-[\w:<>]*) *(.*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, []); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, []); const options = this.parseLines(result.stdout + result.stderr, optionFinder); - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } - static override async getPossibleStdvers(compiler: BaseCompiler): Promise { + override async getPossibleStdvers(): Promise { return []; } - static override async getPossibleTargets(compiler: BaseCompiler): Promise { + override async getPossibleTargets(): Promise { return ['a8', 'c64', 'c4p', 'raw', 'neo']; } } export class GlslangParser extends BaseParser { - static override async parse(compiler: BaseCompiler) { - await this.getOptions(compiler, '--help'); - return compiler; + override async parse() { + await this.getOptions('--help'); + return this.compiler; } - static override async getOptions(compiler: BaseCompiler, helpArg: string) { + override async getOptions(helpArg: string) { const optionFinder1 = /^ *(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*) {2,}(.*)/i; const optionFinder2 = /^ *(--?[\d#+,<=>[\]a-z|-]* ?[\d+,<=>[\]a-z|-]*)/i; - const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]); + const result = await this.compiler.execCompilerCached(this.compiler.compiler.exe, [helpArg]); // glslang will return a return code of 1 when calling --help (since it means nothing was compiled) const options = this.parseLines(result.stdout + result.stderr, optionFinder1, optionFinder2); - compiler.possibleArguments.populateOptions(options); + this.compiler.possibleArguments.populateOptions(options); return options; } } diff --git a/lib/compilers/coccinelle.ts b/lib/compilers/coccinelle.ts index 7e14f9593..e932cff3b 100644 --- a/lib/compilers/coccinelle.ts +++ b/lib/compilers/coccinelle.ts @@ -133,10 +133,6 @@ export class CoccinelleCCompiler extends BaseCompiler { return super.getIrOutputFilename(inputFilename, filters); } - override getArgumentParserClass() { - return super.getArgumentParserClass(); - } - override isCfgCompiler() { return false; } diff --git a/lib/compilers/codon.ts b/lib/compilers/codon.ts new file mode 100644 index 000000000..3ef64d5ca --- /dev/null +++ b/lib/compilers/codon.ts @@ -0,0 +1,55 @@ +// Copyright (c) 2025, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js'; +import type {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js'; +import {BaseCompiler} from '../base-compiler.js'; + +export class CodonCompiler extends BaseCompiler { + static get key() { + return 'codon'; + } + + override optionsForFilter( + filters: ParseFiltersAndOutputOptions, + outputFilename: string, + userOptions?: string[], + ): string[] { + filters.binary = !(userOptions?.includes('-llvm') || userOptions?.includes('--llvm')); + return ['build', '-o', this.filename(outputFilename)]; + } + + override getSharedLibraryPathsAsArguments( + libraries: SelectedLibraryVersion[], + libDownloadPath: string | undefined, + toolchainPath: string | undefined, + dirPath: string, + ): string[] { + return []; + } + + override getCompilerResultLanguageId(filters?: ParseFiltersAndOutputOptions): string | undefined { + return filters?.binary ? 'asm' : 'llvm-ir'; + } +} diff --git a/lib/compilers/mojo.ts b/lib/compilers/mojo.ts index 5f1a8bef5..7c4409652 100644 --- a/lib/compilers/mojo.ts +++ b/lib/compilers/mojo.ts @@ -27,6 +27,7 @@ import path from 'node:path'; import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js'; import {BaseCompiler} from '../base-compiler.js'; import {changeExtension} from '../utils.js'; +import {MojoParser} from './argument-parsers.js'; export class MojoCompiler extends BaseCompiler { static get key() { @@ -95,4 +96,8 @@ export class MojoCompiler extends BaseCompiler { const irText = await fs.readFile(llPath, 'utf8'); return {asm: irText.split('\n').map(text => ({text}))}; } + + override getArgumentParserClass() { + return MojoParser; + } } diff --git a/lib/compilers/rust.ts b/lib/compilers/rust.ts index 4b02ba4c4..39c48af5e 100644 --- a/lib/compilers/rust.ts +++ b/lib/compilers/rust.ts @@ -117,7 +117,7 @@ export class RustCompiler extends BaseCompiler { } override async populatePossibleOverrides() { - const possibleEditions = await RustParser.getPossibleEditions(this); + const possibleEditions = await this.argParser.getPossibleEditions(); if (possibleEditions.length > 0) { let defaultEdition: undefined | string; if (!this.compiler.semver || this.isNightly()) { diff --git a/lib/compilers/tablegen.ts b/lib/compilers/tablegen.ts index 0780af002..4ea02fde0 100644 --- a/lib/compilers/tablegen.ts +++ b/lib/compilers/tablegen.ts @@ -26,7 +26,7 @@ export class TableGenCompiler extends BaseCompiler { } override async populatePossibleOverrides() { - const possibleActions = await TableGenParser.getPossibleActions(this); + const possibleActions = await this.argParser.getPossibleActions(); if (possibleActions.length > 0) { this.compiler.possibleOverrides?.push({ name: CompilerOverrideType.action, diff --git a/lib/languages.ts b/lib/languages.ts index d54b32331..9ef04fb10 100644 --- a/lib/languages.ts +++ b/lib/languages.ts @@ -493,7 +493,7 @@ const definitions: Record = { monaco: 'hylo', extensions: ['.hylo'], alias: [], - logoFilename: 'hylo.svg', + logoFilename: 'hylo.png', logoFilenameDark: null, formatter: null, previewFilter: null, @@ -607,7 +607,7 @@ const definitions: Record = { monaco: 'nim', extensions: ['.nim'], alias: [], - logoFilename: 'nim.svg', + logoFilename: 'nim.png', logoFilenameDark: null, formatter: null, previewFilter: null, diff --git a/lib/options-handler.ts b/lib/options-handler.ts index d953564c3..fbbe997a3 100755 --- a/lib/options-handler.ts +++ b/lib/options-handler.ts @@ -120,6 +120,7 @@ export type ClientOptionsType = { }; motdUrl: string; pageloadUrl: string; + explainApiEndpoint: string; }; /*** @@ -220,6 +221,7 @@ export class ClientOptionsHandler implements ClientOptionsSource { }, }, motdUrl: ceProps('motdUrl', ''), + explainApiEndpoint: ceProps('explainApiEndpoint', ''), pageloadUrl: ceProps('pageloadUrl', ''), }; // Will be immediately replaced with actual values diff --git a/lib/parsers/asm-parser.ts b/lib/parsers/asm-parser.ts index d18671bc9..3a7b8659a 100644 --- a/lib/parsers/asm-parser.ts +++ b/lib/parsers/asm-parser.ts @@ -333,7 +333,7 @@ export class AsmParser extends AsmRegex implements IAsmParser { // Opcode expression here matches LLVM-style opcodes of the form `%blah = opcode` this.hasOpcodeRe = /^\s*(%[$.A-Z_a-z][\w$.]*\s*=\s*)?[A-Za-z]/; this.instructionRe = /^\s*[A-Za-z]+/; - this.identifierFindRe = /([$.@A-Z_a-z]\w*)(?:@\w+)*/g; + this.identifierFindRe = /([$.@A-Z_a-z"]\w*"?)(?:@\w+)*/g; this.hasNvccOpcodeRe = /^\s*[@A-Za-z|]/; this.definesFunction = /^\s*\.(type.*,\s*[#%@]function|proc\s+[.A-Z_a-z][\w$.]*:.*)$/; this.definesGlobal = /^\s*\.(?:globa?l|GLB|export)\s*([.A-Z_a-z][\w$.]*|"[.A-Z_a-z][\w$.]*")/; diff --git a/package-lock.json b/package-lock.json index 41548a854..dc27c9bfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "lodash.clonedeep": "^4.5.0", "lru-cache": "^11.1.0", "lz-string": "^1.5.0", + "marked": "^15.0.12", "monaco-editor": "^0.49.0", "monaco-vim": "^0.4.2", "morgan": "^1.10.1", @@ -6162,9 +6163,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001727", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", - "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "version": "1.0.30001731", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz", + "integrity": "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==", "funding": [ { "type": "opencollective", @@ -6178,7 +6179,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/caseless": { "version": "0.12.0", @@ -10267,6 +10269,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -13838,10 +13852,11 @@ "dev": true }, "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz", + "integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.14" } diff --git a/package.json b/package.json index 251abd553..e1e40fd5c 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "lodash.clonedeep": "^4.5.0", "lru-cache": "^11.1.0", "lz-string": "^1.5.0", + "marked": "^15.0.12", "monaco-editor": "^0.49.0", "monaco-vim": "^0.4.2", "morgan": "^1.10.1", diff --git a/public/logos/README.md b/public/logos/README.md new file mode 100644 index 000000000..43df3c00b --- /dev/null +++ b/public/logos/README.md @@ -0,0 +1,44 @@ +# Logo Optimization Guidelines + +This directory contains logos for programming languages displayed in Compiler Explorer. To maintain fast loading times and reasonable bundle sizes, logos should be optimized before adding them. + +## Size Guidelines + +- **Target size**: Keep individual logos under 20KB when possible +- **Maximum dimensions**: 256×256 pixels (preserving aspect ratio) +- **File formats**: SVG preferred for simple graphics, PNG for complex images + +## Optimization Tools & Commands + +### PNG Images +```bash +# Resize and optimize (preserves aspect ratio) +convert input.png -resize 256x256> -quality 85 output.png + +# Alternative with pngquant for better compression +pngquant --quality=65-80 --output output.png input.png +``` + +### SVG Images +```bash +# Optimize with SVGO (install with: npm install -g svgo) +npx svgo input.svg --output output.svg + +# For SVGs with embedded raster data, convert to PNG instead +convert input.svg -resize 256x256 -quality 85 output.png +``` + +## Common Issues + +- **Embedded Base64 data in SVGs**: These are usually very large (300KB+). Convert to PNG instead. +- **Oversized PNGs**: Images over 1000px wide/tall should be resized to 256×256 or smaller. +- **16-bit PNGs**: Convert to 8-bit with `convert input.png -depth 8 output.png` + +## Recent Optimizations + +Examples of successful optimizations: +- `hylo.svg` (321KB) → `hylo.png` (27KB) - 92% reduction +- `nim.svg` (126KB) → `nim.png` (13KB) - 90% reduction +- `scala.png` (79KB) → optimized (14KB) - 82% reduction + +Always test that optimized logos look good at small icon sizes (16-32px) in the UI. \ No newline at end of file diff --git a/public/logos/clean.svg b/public/logos/clean.svg old mode 100755 new mode 100644 diff --git a/public/logos/cmake.svg b/public/logos/cmake.svg index e0ec18c03..2db18f9cf 100644 --- a/public/logos/cmake.svg +++ b/public/logos/cmake.svg @@ -1,117 +1 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/cpp.svg b/public/logos/cpp.svg old mode 100755 new mode 100644 diff --git a/public/logos/dotnet.svg b/public/logos/dotnet.svg old mode 100755 new mode 100644 diff --git a/public/logos/erlang.svg b/public/logos/erlang.svg old mode 100755 new mode 100644 diff --git a/public/logos/fsharp.svg b/public/logos/fsharp.svg old mode 100755 new mode 100644 diff --git a/public/logos/gimple.svg b/public/logos/gimple.svg index b059c0cde..f1d2d3b22 100644 --- a/public/logos/gimple.svg +++ b/public/logos/gimple.svg @@ -1,47 +1 @@ - - - - - - -Created by potrace 1.7, written by Peter Selinger 2001-2005 - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/haskell.png b/public/logos/haskell.png index c4d3d44bd..43ba04c91 100644 Binary files a/public/logos/haskell.png and b/public/logos/haskell.png differ diff --git a/public/logos/hlsl.png b/public/logos/hlsl.png index 30007dfd7..49193ed4c 100644 Binary files a/public/logos/hlsl.png and b/public/logos/hlsl.png differ diff --git a/public/logos/hook-dark.png b/public/logos/hook-dark.png index 576aff526..341dc5b53 100644 Binary files a/public/logos/hook-dark.png and b/public/logos/hook-dark.png differ diff --git a/public/logos/hook.png b/public/logos/hook.png index 09742b708..f3e842a78 100644 Binary files a/public/logos/hook.png and b/public/logos/hook.png differ diff --git a/public/logos/hylo.png b/public/logos/hylo.png new file mode 100644 index 000000000..bf953c92b Binary files /dev/null and b/public/logos/hylo.png differ diff --git a/public/logos/hylo.svg b/public/logos/hylo.svg deleted file mode 100644 index 867dd09d2..000000000 --- a/public/logos/hylo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/ispc.png b/public/logos/ispc.png old mode 100755 new mode 100644 diff --git a/public/logos/nim.png b/public/logos/nim.png new file mode 100644 index 000000000..ffa7e3059 Binary files /dev/null and b/public/logos/nim.png differ diff --git a/public/logos/nim.svg b/public/logos/nim.svg deleted file mode 100644 index feed94a22..000000000 --- a/public/logos/nim.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/logos/nix.svg b/public/logos/nix.svg index 9a70a1473..984c4b8f6 100644 --- a/public/logos/nix.svg +++ b/public/logos/nix.svg @@ -1,513 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/public/logos/odin.png b/public/logos/odin.png index 720918a42..7a8bdbeef 100644 Binary files a/public/logos/odin.png and b/public/logos/odin.png differ diff --git a/public/logos/pony.svg b/public/logos/pony.svg index f48eaf81f..2f9b3a1d5 100644 --- a/public/logos/pony.svg +++ b/public/logos/pony.svg @@ -1,307 +1 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/public/logos/ruby.svg b/public/logos/ruby.svg index 2a055472b..0d88001e6 100644 --- a/public/logos/ruby.svg +++ b/public/logos/ruby.svg @@ -1,136 +1 @@ - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/public/logos/scala.png b/public/logos/scala.png index 8280fd4bf..120b0dbf4 100644 Binary files a/public/logos/scala.png and b/public/logos/scala.png differ diff --git a/public/logos/solidity.svg b/public/logos/solidity.svg old mode 100755 new mode 100644 diff --git a/public/logos/spice.png b/public/logos/spice.png index bb9af0b9f..7e9c2ff4b 100644 Binary files a/public/logos/spice.png and b/public/logos/spice.png differ diff --git a/public/logos/ts.svg b/public/logos/ts.svg old mode 100755 new mode 100644 diff --git a/shared/common-utils.ts b/shared/common-utils.ts index 33ff16d1a..920c09a34 100644 --- a/shared/common-utils.ts +++ b/shared/common-utils.ts @@ -209,3 +209,8 @@ class ArgumentParser { export function splitArguments(str = ''): string[] { return new ArgumentParser(str).exec(); } + +export function capitaliseFirst(str: string): string { + if (str.length === 0) return str; + return str.charAt(0).toUpperCase() + str.slice(1); +} diff --git a/static/components.interfaces.ts b/static/components.interfaces.ts index c2b27ba5e..339c040c5 100644 --- a/static/components.interfaces.ts +++ b/static/components.interfaces.ts @@ -76,6 +76,7 @@ export const GNAT_DEBUG_VIEW_COMPONENT_NAME = 'gnatdebug' as const; export const RUST_MACRO_EXP_VIEW_COMPONENT_NAME = 'rustmacroexp' as const; export const RUST_HIR_VIEW_COMPONENT_NAME = 'rusthir' as const; export const DEVICE_VIEW_COMPONENT_NAME = 'device' as const; +export const EXPLAIN_VIEW_COMPONENT_NAME = 'explain' as const; export type StateWithLanguage = {lang: string}; // TODO(#7808): Normalize state types to reduce duplication (see #4490) @@ -338,6 +339,13 @@ export type PopulatedDeviceViewState = StateWithId & { treeid: number; }; +export type EmptyExplainViewState = EmptyState; +export type PopulatedExplainViewState = StateWithId & { + compilerName: string; + editorid: number; + treeid: number; +}; + /** * Mapping of component names to their expected state types. This provides compile-time type safety for component * states. Components can have either empty (default) or populated states. @@ -372,6 +380,7 @@ export interface ComponentStateMap { [RUST_MACRO_EXP_VIEW_COMPONENT_NAME]: EmptyRustMacroExpViewState | PopulatedRustMacroExpViewState; [RUST_HIR_VIEW_COMPONENT_NAME]: EmptyRustHirViewState | PopulatedRustHirViewState; [DEVICE_VIEW_COMPONENT_NAME]: EmptyDeviceViewState | PopulatedDeviceViewState; + [EXPLAIN_VIEW_COMPONENT_NAME]: EmptyExplainViewState | PopulatedExplainViewState; } /** diff --git a/static/components.ts b/static/components.ts index 4adc9b234..7c2cc2152 100644 --- a/static/components.ts +++ b/static/components.ts @@ -41,6 +41,7 @@ import { DragSourceFactory, EDITOR_COMPONENT_NAME, EXECUTOR_COMPONENT_NAME, + EXPLAIN_VIEW_COMPONENT_NAME, FLAGS_VIEW_COMPONENT_NAME, GCC_DUMP_VIEW_COMPONENT_NAME, GNAT_DEBUG_TREE_VIEW_COMPONENT_NAME, @@ -939,6 +940,26 @@ export function getDeviceViewWith( }; } +/** Get an empty explain view component. */ +export function getExplainView(): ComponentConfig { + return createComponentConfig(EXPLAIN_VIEW_COMPONENT_NAME, {}); +} + +/** Get an explain view with the given configuration. */ +export function getExplainViewWith( + id: number, + compilerName: string, + editorid: number, + treeid: number, +): ComponentConfig { + return createComponentConfig(EXPLAIN_VIEW_COMPONENT_NAME, { + id, + compilerName, + editorid, + treeid, + }); +} + /** * Helper function to create a typed component configuration */ diff --git a/static/event-map.ts b/static/event-map.ts index 62e675f92..cfe13c32a 100644 --- a/static/event-map.ts +++ b/static/event-map.ts @@ -72,6 +72,8 @@ export type EventMap = { copyShortLinkToClip: () => void; deviceViewClosed: (compilerId: number) => void; deviceViewOpened: (compilerId: number) => void; + explainViewClosed: (compilerId: number) => void; + explainViewOpened: (compilerId: number) => void; displaySharingPopover: () => void; editorChange: (editorId: number, source: string, langId: string, compilerId?: number) => void; editorClose: (editorId: number) => void; diff --git a/static/generated/privacy.pug b/static/generated/privacy.pug index 90f1bde7e..882c5578a 100644 --- a/static/generated/privacy.pug +++ b/static/generated/privacy.pug @@ -17,12 +17,35 @@ html(lang="en") | Thanks for your interest in what Compiler Explorer does with your data. Data protection is really | important to the Compiler Explorer team, and we want to be very clear about what we do with your data. + h3 The short version + + ul + li We compile your code then delete it from our servers. + li Short shared links store your code indefinitely if you choose to create them. + li We keep some logs to help run the service. + li We only share data with third parties with your explicit consent. + + h3 How long we keep things + + ul + li Your source code is usually deleted within minutes, or up to 1 week if we need it for debugging (unless you opt out). + li + | Short shared links are kept indefinitely. In exceptional circumstances (such as accidental exposure of sensitive information), + | we may be able to delete links. Contact + a(href="mailto:privacy@compiler-explorer.com") privacy@compiler-explorer.com + | to discuss. + li Web logs contain semi-anonymised IP addresses for up to 32 days. + li Amazon logs contain full IP addresses for up to 32 days. + li Compilation analytics (which compilers and settings are used) are kept for up to 1 year to help us improve the service. + li Error reports hold IP and browser info for up to 90 days. + li Cached compilation results are stored in memory and on disk, but can't be traced back to your original code. + h3 Who we are p | Compiler Explorer was created by and is primarily administrated by | - a(href="mailto:matt@godbolt.org") Matt Godbolt + a(href="https://xania.org" target="_blank" rel="noreferrer noopener") Matt Godbolt | , along with a number of volunteers (including, but not limited to those listed in our " a(href="https://github.com/compiler-explorer/compiler-explorer/blob/main/AUTHORS.md" target="_blank" rel="noreferrer noopener") Authors @@ -35,36 +58,42 @@ html(lang="en") | | if you wish to help. - h3 Your data + h3 What happens when you compile code p - | In order to process compilation and execution requests, your browser sends the source code you typed in the editor - | window along with your chosen compiler and options to the Compiler Explorer servers. There, the source code is - | written to disk and your chosen compiler is invoked on it. If your request was to have your code executed, the - | resulting executable is run. The outputs from compilation and execution are processed and sent back to your web - | browser, where they're shown. Shortly after this process completes, your source code is deleted from disk. If, in - | processing your query, an issue with Compiler Explorer is found, your code may be kept for up to a week in order to - | help debug and diagnose the problem. Only the Compiler Explorer team will have access to your code, and only for the - | purposes of debugging the site: we will never share your code with anyone. + | When you compile, your browser sends your source code and compiler settings to our servers. We write your code + | to a temporary file, run the compiler on it, and send the results back to your browser. p - | The source code and options are also subject to a one-way hash, which is used to cache the results to speed up - | subsequent compilations of the same code. The cache is in-memory and on-disk. It's impossible to reconstruct the - | source code from the hash, but the resulting assembly code or binary output (the compilation result) is stored as - | plain text. There's no way to enumerate the in-memory cache contents. In exceptional cases, administrator members of - | the Compiler Explorer team may be able to enumerate the disk caches and retrieve the compilation output, but with no - | way to trace it back to the source code. + | Your code is deleted within minutes. As soon as compilation finishes, we clean up the temporary files. p - | In short: your source code is stored in plaintext for the minimum time feasible to be able to process your request. - | After that, it is discarded and is inaccessible. In very rare cases your code may be kept for a little longer (at - | most a week) to help debug issues in Compiler Explorer. + | Exception for debugging: If something goes wrong with Compiler Explorer itself (not your code, but our + | system), we might keep your code for up to a week to help us fix the problem. This only happens if you have the + | "Allow my source code to be temporarily stored for diagnostic purposes" setting enabled (which it is by default). + | You can disable this in Settings if you prefer. Only the Compiler Explorer team can access this, and we'll never + | share your code with anyone else. - h4 Short links + h3 How we speed things up (caching) + + p + | To make repeated compilations faster, we cache the results. + + p + | We create a unique fingerprint from your code and settings using a secure hash. We cannot reconstruct + | your original code from this fingerprint. However, we do store the compilation results (the assembly or executable + | output) as plain text, linked to that fingerprint. + + p + | Part of this cache lives in memory and disappears when we restart our servers. Part of it is stored on shared disk. In + | exceptional cases, the small team of trusted Compiler Explorer administrators might be able to see these cached compilation + | results, but there's no way for us to trace them back to the original source code. + + h3 Shared links p | If you choose to share your code using the "Share" dropdown, then the user interface state including the source code - | is stored. For a "Full" link, this information is encoded into the URL as a URL hash (e.g. + | is stored. For a "Full" link, this information is encoded into the URL after the # symbol (e.g. | #[code https://godbolt.org/#ui_state_and_code]). For short URLs, the interface state is stored on | Compiler Explorer's servers, and a shortened name uniquely | referring to this data is returned. The shortened name comes from a secure hash of the state, and without @@ -73,38 +102,42 @@ html(lang="en") | Links of this form look like #[code https://godbolt.org/z/SHORTNAME]. p - | Prior to storing data itself, Compiler Explorer used an external URL shortening service ( - a(href="https://goo.gl/" target="_blank") goo.gl - | ) and the resulting short URL was rewritten as #[code https://godbolt.org/g/SHORTURLPART]. - | The storage for the user experience state in this case remains with the short URL provider, - | not Compiler Explorer. + | Before September 2018, Compiler Explorer used Google's goo.gl service for short links. + | We switched to our own system in 2018, but when Google shut down goo.gl in 2025, we migrated any remaining old + | links to ensure they keep working. - h4 Application, web and error logs + h3 Application, web and error logs p - | Compiler Explorer keeps application logs, which contain semi-anonymised IP addresses, but no other personally - | identifying information. When a long URL is clicked, the hash part of the URL is not sent to the server, so the user - | state (including the source code) is NOT exposed in the web log. If a user clicks a short URL, then the short form - | #[em is] exposed in the web log (as #[code https://godbolt.org/g/SHORTURLPART]) and from this the source code can be - | retrieved. As such, if you create a short URL of your code, your source - | code and other user state can in principle be retrieved from the web log of Compiler Explorer. + | Web access logs contain semi-anonymised IP addresses (we remove parts of the IP address to make them less identifying) but + | no other personal information. + | When you visit a long Compiler Explorer URL (the ones with #[code #] in them), your code + | stays in your browser and isn't logged. If you visit a short URL we created (like #[code godbolt.org/z/abc123]), + | then we can potentially retrieve your code from our logs. p - | Compiler Explorer keeps a separate compile request log for Analytics purposes without identifying information. - | This log only contains the settings which were used - minus code and options that may contain sensitive data. + | Compilation logs are separate analytics logs that record which compilers and settings people use. + | These analytics help us understand usage patterns and plan improvements. We store a fingerprint (hash) of your + | source code along with compiler options, filters, and libraries used, but we can't reverse this to see your + | actual code. These analytics are kept for up to 1 year. We may share aggregate statistics about compiler usage publicly, + | but these never include individual usage patterns or any way to identify specific users. p - | Compiler Explorer uses Amazon's web serving, load balancing and edge caching systems. In order to debug and diagnose - | Compiler Explorer, to help track down and block Denial of Service attacks, and to gather statistics about Compiler - | Explorer's performance and usage, the logs from these systems are archived. These logs contain the full IP addresses - | of requests. They are kept for no more than one month, after which they are permanently deleted. + | Amazon infrastructure logs: We use Amazon's servers to run Compiler Explorer. Their logs (which help us + | debug issues and block attacks) contain full IP addresses and are kept for up to 32 days, then permanently + | deleted. p - | If your web browser experiences an error, we use a third party reporting system ( + | For error reporting: If something goes wrong in your browser, we use + | a(href="https://sentry.io/" target="_blank") Sentry - | ). This keeps information, including your IP address and web browser user agent, for no more than 90 days. + | + | to help us fix it. This keeps your IP address and browser information for up to 90 days. - h4 Executing your code + p + | If we need to share data with new third-party services in the future, we'll update this privacy policy accordingly. + + h3 Executing your code p | For certain configurations, we may support executing the results of your compilation on the Compiler Explorer @@ -112,37 +145,57 @@ html(lang="en") | both the Compiler Explorer site and other concurrently-processed requests from information leakage due to rogue | executions. - h4 Cookies + h3 Claude Explain + + p + | The "Claude Explain" view sends your code and data to Anthropic, the makers of Claude. We always ask for consent + | before sending your code, and Anthropic does not use anything we send them for training. For the purposes of + | Anthropic's own Privacy Policy, we use them as a "data processor", and so our own privacy policy applies to the + | data. + + h3 Cookies p | Compiler Explorer uses small pieces of information stored on your computer: Cookies and Browser Local - | Storage (and Session Storage). Local storage is used to remember the user's settings, source code and user interface configuration, so - | that it's available when the user visits the Compiler Explorer site again. This information is not transmitted to - | Compiler Explorer, except as described above in order to fulfil the user's requests. There is a + | Storage (and Session Storage). Local storage remembers your settings, source code and user interface configuration + | so it's available when you visit again. This information is not transmitted to + | Compiler Explorer, except as described above in order to fulfil your requests. There is a | a(href="#cookies" rel="noreferrer noopener") separate document | | covering more on this. - h3 Your choices + h3 Your rights and choices p - | Compiler Explorer is an open source project. If you are concerned about any of the data protection measures outlined - | above, or about what happens to your source code, you are encouraged to run your own local instance of Compiler - | Explorer. Instructions on how to do this are on the + | You decide if and when to create shared links. In case of an emergency you can request + | deletion by contacting us. + + p + | For Claude Explain, we always ask for your explicit consent before sending any code to Anthropic. + + p + | Compiler Explorer is open source. If you prefer complete control over your data, + | you can run your own instance. Instructions are on our | a(href="https://github.com/compiler-explorer/compiler-explorer" target="_blank" rel="noreferrer noopener") GitHub project page | . + p + | If you have questions about your data or want to request deletion of a shared link, contact us at + | + a(href="mailto:privacy@compiler-explorer.com") privacy@compiler-explorer.com + | . + h3 Compiler Explorer and the GDPR p - | The Compiler Explorer team believes the Compiler Explorer site is compliant with the EU's General Data Protection - | Regulation (GDPR). Specifically, we store no personally identifying information, we anonymise the little data that - | we do have and we do not permanently store any user data. + | We comply with the EU's General Data Protection Regulation (GDPR) because we don't store personal information + | long-term. IP addresses are semi-anonymised and deleted within one month, and your source code is processed + | temporarily and then deleted. - h4 Name and Address of the controller + h4 Name and contact details of the controller p | The Controller for the purposes of the General Data Protection Regulation (GDPR), other data protection laws @@ -151,9 +204,6 @@ html(lang="en") div | Matt Godbolt br - | 2626 Orrington Ave + | Compiler Explorer LLC br - | Evanston IL 60201 USA - br - | +1 312 792-7931
- a(href="mailto:matt@godbolt.org") matt@godbolt.org + a(href="mailto:privacy@compiler-explorer.com") privacy@compiler-explorer.com diff --git a/static/hub.ts b/static/hub.ts index 22c7ca92e..b297a7000 100644 --- a/static/hub.ts +++ b/static/hub.ts @@ -36,6 +36,7 @@ import { DIFF_VIEW_COMPONENT_NAME, EDITOR_COMPONENT_NAME, EXECUTOR_COMPONENT_NAME, + EXPLAIN_VIEW_COMPONENT_NAME, FLAGS_VIEW_COMPONENT_NAME, GCC_DUMP_VIEW_COMPONENT_NAME, GNAT_DEBUG_TREE_VIEW_COMPONENT_NAME, @@ -70,6 +71,7 @@ import {DeviceAsm as DeviceView} from './panes/device-view.js'; import {Diff} from './panes/diff.js'; import {Editor} from './panes/editor.js'; import {Executor} from './panes/executor.js'; +import {ExplainView} from './panes/explain-view.js'; import {Flags as FlagsView} from './panes/flags-view.js'; import {GccDump as GCCDumpView} from './panes/gccdump-view.js'; import {GnatDebug as GnatDebugView} from './panes/gnatdebug-view.js'; @@ -165,6 +167,7 @@ export class Hub { layout.registerComponent(CONFORMANCE_VIEW_COMPONENT_NAME, (c: GLC, s: any) => this.conformanceViewFactory(c, s), ); + layout.registerComponent(EXPLAIN_VIEW_COMPONENT_NAME, (c: GLC, s: any) => this.explainViewFactory(c, s)); layout.eventHub.on( 'editorOpen', @@ -581,4 +584,8 @@ export class Hub { ): ConformanceView { return new ConformanceView(this, container, state); } + + public explainViewFactory(container: GoldenLayout.Container, state: any): ExplainView { + return new ExplainView(this, container, state); + } } diff --git a/static/options.interfaces.ts b/static/options.interfaces.ts index 4d54a3c7b..b253cdef7 100644 --- a/static/options.interfaces.ts +++ b/static/options.interfaces.ts @@ -84,4 +84,5 @@ export type Options = { supportsExecute: boolean; supportsLibraryCodeFilter: boolean; cvCompilerCountMax: number; + explainApiEndpoint: string; }; diff --git a/static/panes/compiler.ts b/static/panes/compiler.ts index 6e4bbacd1..51a57d3e5 100644 --- a/static/panes/compiler.ts +++ b/static/panes/compiler.ts @@ -189,11 +189,13 @@ export class Compiler extends MonacoPane; private rustMirButton: JQuery; private rustMacroExpButton: JQuery; + private rustHirButton: JQuery; private haskellCoreButton: JQuery; private haskellStgButton: JQuery; private haskellCmmButton: JQuery; private gccDumpButton: JQuery; private cfgButton: JQuery; + private explainButton: JQuery; private executorButton: JQuery; private libsButton: JQuery; private compileInfoLabel: JQuery; @@ -236,7 +238,6 @@ export class Compiler extends MonacoPane; private statusLabel: JQuery; private statusIcon: JQuery; - private rustHirButton: JQuery; private libsWidget: LibsWidget | null; private isLabelCtxKey: monaco.editor.IContextKey; private revealJumpStackHasElementsCtxKey: monaco.editor.IContextKey; @@ -658,6 +659,15 @@ export class Compiler extends MonacoPane { + return Components.getExplainViewWith( + this.id, + this.getCompilerName(), + this.sourceEditorId ?? 0, + this.sourceTreeId ?? 0, + ); + }; + const createExecutor = () => { const currentState = this.getCurrentState(); const editorId = currentState.source; @@ -934,6 +944,18 @@ export class Compiler extends MonacoPane createExplainView()).on( + 'dragStart', + hidePaneAdder, + ); + + this.explainButton.on('click', () => { + const insertPoint = + this.hub.findParentRowOrColumn(this.container.parent) || + this.container.layoutManager.root.contentItems[0]; + insertPoint.addChild(createExplainView()); + }); + createDragSource(this.container.layoutManager, this.executorButton, () => createExecutor()).on( 'dragStart', hidePaneAdder, @@ -947,6 +969,11 @@ export class Compiler extends MonacoPane { if (id === this.id) { this.sendCompiler(); diff --git a/static/panes/explain-view-utils.ts b/static/panes/explain-view-utils.ts new file mode 100644 index 000000000..db9aa7c0a --- /dev/null +++ b/static/panes/explain-view-utils.ts @@ -0,0 +1,225 @@ +// Copyright (c) 2025, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import {marked} from 'marked'; +import {capitaliseFirst} from '../../shared/common-utils.js'; +import {CompilationResult} from '../../types/compilation/compilation.interfaces.js'; +import {CompilerInfo} from '../../types/compiler.interfaces.js'; +import {AvailableOptions, ClaudeExplainResponse, ExplainRequest} from './explain-view.interfaces.js'; + +// Anything to do with the explain view that doesn't need any direct UI access, so we can test it easily. +// Includes validation, request building, caching, formatting, and other pure functions. + +export interface ExplainContext { + lastResult: CompilationResult | null; + compiler: CompilerInfo | null; + selectedAudience: string; + selectedExplanation: string; + explainApiEndpoint: string; + consentGiven: boolean; + availableOptions: AvailableOptions | null; +} + +export enum ValidationErrorCode { + MISSING_REQUIRED_DATA = 'MISSING_REQUIRED_DATA', + OPTIONS_NOT_AVAILABLE = 'OPTIONS_NOT_AVAILABLE', + API_ENDPOINT_NOT_CONFIGURED = 'API_ENDPOINT_NOT_CONFIGURED', + NO_AI_DIRECTIVE_FOUND = 'NO_AI_DIRECTIVE_FOUND', +} + +export type ValidationResult = {success: true} | {success: false; errorCode: ValidationErrorCode; message: string}; + +/** + * Validates that all preconditions are met for fetching an explanation. + * Returns a result object indicating success or failure with error message. + */ +export function validateExplainPreconditions(context: ExplainContext): ValidationResult { + if (!context.lastResult || !context.consentGiven || !context.compiler) { + return { + success: false, + errorCode: ValidationErrorCode.MISSING_REQUIRED_DATA, + message: 'Missing required data: compilation result, consent, or compiler info', + }; + } + + if (context.availableOptions === null) { + return { + success: false, + errorCode: ValidationErrorCode.OPTIONS_NOT_AVAILABLE, + message: 'Explain options not available', + }; + } + + if (!context.explainApiEndpoint) { + return { + success: false, + errorCode: ValidationErrorCode.API_ENDPOINT_NOT_CONFIGURED, + message: 'Claude Explain API endpoint not configured', + }; + } + + if (context.lastResult.source && checkForNoAiDirective(context.lastResult.source)) { + return { + success: false, + errorCode: ValidationErrorCode.NO_AI_DIRECTIVE_FOUND, + message: 'no-ai directive found in source code', + }; + } + + return {success: true}; +} + +/** + * Builds the request payload for the explain API. + * Handles defaults for optional fields and constructs a complete ExplainRequest. + */ +export function buildExplainRequest(context: ExplainContext, bypassCache: boolean): ExplainRequest { + if (!context.compiler || !context.lastResult) { + throw new Error('Missing compiler or compilation result'); + } + + return { + language: context.compiler.lang, + compiler: context.compiler.name, + code: context.lastResult.source ?? '', + compilationOptions: context.lastResult.compilationOptions ?? [], + instructionSet: context.lastResult.instructionSet ?? 'amd64', + asm: Array.isArray(context.lastResult.asm) ? context.lastResult.asm : [], + audience: context.selectedAudience, + explanation: context.selectedExplanation, + ...(bypassCache && {bypassCache: true}), + }; +} + +/** + * Checks if the source code contains a no-ai directive (case-insensitive). + * Returns true if the directive is found, false otherwise. + */ +export function checkForNoAiDirective(sourceCode: string): boolean { + return /no-ai/i.test(sourceCode); +} + +/** + * Generates a consistent cache key from the request payload. + * Uses JSON serialization of normalized payload fields. + */ +export function generateCacheKey(payload: ExplainRequest): string { + return JSON.stringify({ + language: payload.language, + compiler: payload.compiler, + code: payload.code, + compilationOptions: payload.compilationOptions ?? [], + instructionSet: payload.instructionSet, + asm: payload.asm, + audience: payload.audience, + explanation: payload.explanation, + }); +} + +/** + * Formats markdown text to HTML using marked with consistent options. + * Returns the HTML string ready for display. + */ +export function formatMarkdown(markdown: string): string { + const markedOptions = { + gfm: true, // GitHub Flavored Markdown + breaks: true, // Convert line breaks to
+ }; + + // marked.parse() is synchronous and returns a string, but TypeScript types suggest it could be Promise + // The cast is safe because we're using the default synchronous implementation + return marked.parse(markdown, markedOptions) as string; +} + +/** + * Formats statistics text from Claude API response data. + * Returns an array of formatted stats strings. + */ +export function formatStatsText( + data: ClaudeExplainResponse, + clientCacheHit: boolean, + serverCacheHit: boolean, +): string[] { + if (!data.usage) return []; + + const stats: string[] = [clientCacheHit ? 'Cached (client)' : serverCacheHit ? 'Cached (server)' : 'Fresh']; + + if (data.model) { + stats.push(`Model: ${data.model}`); + } + if (data.usage.totalTokens) { + stats.push(`Tokens: ${data.usage.totalTokens}`); + } + if (data.cost?.totalCost !== undefined) { + stats.push(`Cost: $${data.cost.totalCost.toFixed(6)}`); + } + + return stats; +} + +/** + * Creates HTML content for popover tooltips from an array of options. + * Each option becomes a formatted div with bold value and description. + */ +export function createPopoverContent(optionsList: Array<{value: string; description: string}>): string { + return optionsList + .map( + option => + `
${capitaliseFirst(option.value)}: ${option.description}
`, + ) + .join(''); +} + +/** + * Formats an error for display, handling both Error objects and other types. + * Returns a user-friendly error message string. + */ +export function formatErrorMessage(error: unknown): string { + let errorMessage: string; + + if (error instanceof Error) { + errorMessage = error.message; + } else if (typeof error === 'string') { + errorMessage = error; + } else if (typeof error === 'object' && error !== null) { + // Try to extract useful information from object errors + const errorObj = error as Record; + if ('message' in errorObj && typeof errorObj.message === 'string') { + errorMessage = errorObj.message; + } else if ('error' in errorObj && typeof errorObj.error === 'string') { + errorMessage = errorObj.error; + } else { + // Fall back to JSON.stringify for better debugging + try { + errorMessage = JSON.stringify(error); + } catch { + errorMessage = String(error); + } + } + } else { + errorMessage = String(error); + } + + return `Error: ${errorMessage}`; +} diff --git a/static/panes/explain-view.interfaces.ts b/static/panes/explain-view.interfaces.ts new file mode 100644 index 000000000..f8463fbc1 --- /dev/null +++ b/static/panes/explain-view.interfaces.ts @@ -0,0 +1,71 @@ +// Copyright (c) 2025, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import {ParsedAsmResultLine} from '../../types/asmresult/asmresult.interfaces.js'; +import {PaneState} from './pane.interfaces.js'; + +export interface ExplainViewState extends PaneState { + audience?: string; + explanation?: string; +} + +export interface ExplanationOption { + value: string; + description: string; +} + +export interface AvailableOptions { + audience: ExplanationOption[]; + explanation: ExplanationOption[]; +} + +export interface ExplainRequest { + language: string; + compiler: string; + code: string; + compilationOptions: string[]; + instructionSet: string; + asm: ParsedAsmResultLine[]; + audience?: string; + explanation?: string; + bypassCache?: boolean; +} + +export interface ClaudeExplainResponse { + status: 'success' | 'error'; + explanation: string; + message?: string; + model?: string; + usage?: { + inputTokens: number; + outputTokens: number; + totalTokens: number; + }; + cost?: { + inputCost: number; + outputCost: number; + totalCost: number; + }; + cached: boolean; +} diff --git a/static/panes/explain-view.ts b/static/panes/explain-view.ts new file mode 100644 index 000000000..b533868cf --- /dev/null +++ b/static/panes/explain-view.ts @@ -0,0 +1,550 @@ +// Copyright (c) 2025, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import {Container} from 'golden-layout'; +import $ from 'jquery'; +import {LRUCache} from 'lru-cache'; +import {capitaliseFirst} from '../../shared/common-utils.js'; +import {CompilationResult} from '../../types/compilation/compilation.interfaces.js'; +import {CompilerInfo} from '../../types/compiler.interfaces.js'; +import {initPopover} from '../bootstrap-utils.js'; +import {Hub} from '../hub.js'; +import {options} from '../options.js'; +import {SentryCapture} from '../sentry.js'; +import * as utils from '../utils.js'; +import {FontScale} from '../widgets/fontscale.js'; +import {AvailableOptions, ClaudeExplainResponse, ExplainRequest, ExplainViewState} from './explain-view.interfaces.js'; +import { + buildExplainRequest, + checkForNoAiDirective, + createPopoverContent, + ExplainContext, + formatErrorMessage, + formatMarkdown, + formatStatsText, + generateCacheKey, + ValidationErrorCode, + validateExplainPreconditions, +} from './explain-view-utils.js'; +import {Pane} from './pane.js'; + +enum StatusIconState { + Loading = 'loading', + Success = 'success', + Error = 'error', + Hidden = 'hidden', +} + +const defaultAudienceType = 'beginner'; +const defaultExplanationType = 'assembly'; + +const statusIconConfigs = { + [StatusIconState.Loading]: { + classes: 'status-icon fas fa-spinner fa-spin', + color: '', + ariaLabel: 'Generating explanation...', + }, + [StatusIconState.Success]: { + classes: 'status-icon fas fa-check-circle', + color: '#4CAF50', + ariaLabel: 'Explanation generated successfully', + }, + [StatusIconState.Error]: { + classes: 'status-icon fas fa-times-circle', + color: '#FF6645', + ariaLabel: 'Error generating explanation', + }, + [StatusIconState.Hidden]: { + classes: 'status-icon fas d-none', + color: '', + ariaLabel: '', + }, +} as const; + +export class ExplainView extends Pane { + private lastResult: CompilationResult | null = null; + private compiler: CompilerInfo | null = null; + private readonly statusIcon: JQuery; + private readonly consentElement: JQuery; + private readonly noAiElement: JQuery; + private readonly contentElement: JQuery; + private readonly bottomBarElement: JQuery; + private readonly statsElement: JQuery; + private readonly audienceSelect: JQuery; + private readonly explanationSelect: JQuery; + private readonly audienceInfoButton: JQuery; + private readonly explanationInfoButton: JQuery; + private readonly explainApiEndpoint: string; + private readonly fontScale: FontScale; + // Use a static variable to persist consent across all instances during the session + private static consentGiven = false; + + // Static cache for available options (shared across all instances) + private static availableOptions: AvailableOptions | null = null; + private static optionsFetchPromise: Promise | null = null; + + // Static explanation cache shared across all instances (200KB limit) + private static cache: LRUCache | null = null; + + // Instance variables for selected options + private selectedAudience: string; + private selectedExplanation: string; + private isInitializing = true; + + // Store compilation results that arrive before initialization completes + private pendingCompilationResult: CompilationResult | null = null; + + constructor(hub: Hub, container: Container, state: ExplainViewState) { + super(hub, container, state); + + this.explainApiEndpoint = options.explainApiEndpoint ?? ''; + + // Initialize static cache if not already done + if (!ExplainView.cache) { + ExplainView.cache = new LRUCache({ + maxSize: 200 * 1024, + sizeCalculation: n => JSON.stringify(n).length, + }); + } + + this.statusIcon = this.domRoot.find('.status-icon'); + this.consentElement = this.domRoot.find('.explain-consent'); + this.noAiElement = this.domRoot.find('.explain-no-ai'); + this.contentElement = this.domRoot.find('.explain-content'); + this.bottomBarElement = this.domRoot.find('.explain-bottom-bar'); + this.statsElement = this.domRoot.find('.explain-stats'); + this.audienceSelect = this.domRoot.find('.explain-audience'); + this.explanationSelect = this.domRoot.find('.explain-type'); + this.audienceInfoButton = this.domRoot.find('.explain-audience-info'); + this.explanationInfoButton = this.domRoot.find('.explain-type-info'); + + this.fontScale = new FontScale(this.domRoot, state, '.explain-content'); + this.fontScale.on('change', this.updateState.bind(this)); + + this.attachEventListeners(); + void this.initializeOptions(); + + this.contentElement.text('Waiting for compilation...'); + this.isAwaitingInitialResults = true; + this.eventHub.emit('explainViewOpened', this.compilerInfo.compilerId); + } + + private handleConsentClick(): void { + ExplainView.consentGiven = true; + this.consentElement.addClass('d-none'); + void this.fetchExplanation(); + } + + private handleReloadClick(): void { + void this.fetchExplanation(true); + } + + private handleAudienceChange(): void { + this.selectedAudience = this.audienceSelect.val() as string; + this.updateState(); + this.refreshExplanationIfReady(); + } + + private handleExplanationChange(): void { + this.selectedExplanation = this.explanationSelect.val() as string; + this.updateState(); + this.refreshExplanationIfReady(); + } + + private refreshExplanationIfReady(): void { + if (ExplainView.consentGiven && this.lastResult) { + void this.fetchExplanation(); + } + } + + private attachEventListeners(): void { + this.consentElement.find('.consent-btn').on('click', this.handleConsentClick.bind(this)); + this.bottomBarElement.find('.explain-reload').on('click', this.handleReloadClick.bind(this)); + this.audienceSelect.on('change', this.handleAudienceChange.bind(this)); + this.explanationSelect.on('change', this.handleExplanationChange.bind(this)); + } + + override getInitialHTML(): string { + return $('#explain').html(); + } + + private async initializeOptions(): Promise { + try { + this.populateSelectOptions(await this.fetchAvailableOptions()); + this.isInitializing = false; + + // Process any compilation results that arrived while we were initializing. + if (this.pendingCompilationResult) { + this.handleCompilationResult(this.pendingCompilationResult); + this.pendingCompilationResult = null; + } + } catch (error) { + this.isInitializing = false; + console.error('Failed to initialize options:', error); + this.showExplainUnavailable(); + // Even if initialization failed, clear any pending results + this.pendingCompilationResult = null; + } + } + + private showExplainUnavailable(): void { + const emptyOptions = [{value: '', description: 'Service unavailable'}]; + this.populateSelect(this.audienceSelect, emptyOptions); + this.populateSelect(this.explanationSelect, emptyOptions); + + this.audienceSelect.prop('disabled', true); + this.explanationSelect.prop('disabled', true); + + this.contentElement.html( + '
Claude Explain is currently unavailable due to a service error. Please try again later.
', + ); + } + + private populateSelect(selectElement: JQuery, optionsList: Array<{value: string; description: string}>): void { + selectElement.empty(); + optionsList.forEach(option => { + const optionElement = $('') + .attr('value', option.value) + .text(capitaliseFirst(option.value)) + .attr('title', option.description); + selectElement.append(optionElement); + }); + } + + private populateSelectOptions(options: AvailableOptions): void { + this.populateSelect(this.audienceSelect, options.audience); + this.populateSelect(this.explanationSelect, options.explanation); + this.updatePopoverContent(options); + + if (this.isInitializing) { + // During initialisation: trust saved state completely, no validation + this.audienceSelect.val(this.selectedAudience); + this.explanationSelect.val(this.selectedExplanation); + } else { + // After initialisation: validate user changes normally + const validAudienceValue = options.audience.some(opt => opt.value === this.selectedAudience) + ? this.selectedAudience + : defaultAudienceType; + const validExplanationValue = options.explanation.some(opt => opt.value === this.selectedExplanation) + ? this.selectedExplanation + : defaultExplanationType; + + this.selectedAudience = validAudienceValue; + this.selectedExplanation = validExplanationValue; + + this.audienceSelect.val(validAudienceValue); + this.explanationSelect.val(validExplanationValue); + } + } + + private updatePopoverContent(options: AvailableOptions): void { + const audienceContent = createPopoverContent(options.audience); + const explanationContent = createPopoverContent(options.explanation); + + initPopover(this.audienceInfoButton, { + content: audienceContent, + html: true, + placement: 'bottom', + trigger: 'focus', + }); + initPopover(this.explanationInfoButton, { + content: explanationContent, + html: true, + placement: 'bottom', + trigger: 'focus', + }); + } + + private async fetchAvailableOptions(): Promise { + // If we already have options cached, return them + if (ExplainView.availableOptions) return ExplainView.availableOptions; + // If we're already fetching, wait for that promise + if (ExplainView.optionsFetchPromise) return ExplainView.optionsFetchPromise; + + // Else, go fetch the options + ExplainView.optionsFetchPromise = (async () => { + try { + const response = await fetch(this.explainApiEndpoint, { + method: 'GET', + headers: {'Content-Type': 'application/json'}, + }); + + if (!response.ok) { + throw new Error(`Failed to fetch options: ${response.status} ${response.statusText}`); + } + + const options = (await response.json()) as AvailableOptions; + ExplainView.availableOptions = options; + return options; + } finally { + ExplainView.optionsFetchPromise = null; + } + })(); + + return ExplainView.optionsFetchPromise; + } + + override initializeStateDependentProperties(state: ExplainViewState): void { + this.selectedAudience = state.audience ?? defaultAudienceType; + this.selectedExplanation = state.explanation ?? defaultExplanationType; + } + + override getCurrentState(): ExplainViewState { + const state = super.getCurrentState() as ExplainViewState; + state.audience = this.selectedAudience; + state.explanation = this.selectedExplanation; + return state; + } + + override onCompiler( + compilerId: number, + compiler: CompilerInfo | null, + _compilerOptions: string, + editorId: number, + treeId: number, + ): void { + if (this.compilerInfo.compilerId !== compilerId) return; + this.compilerInfo.compilerName = compiler ? compiler.name : ''; + this.compilerInfo.editorId = editorId; + this.compilerInfo.treeId = treeId; + this.compiler = compiler; + this.updateTitle(); + } + + private hideSpecialUIElements(): void { + this.consentElement.addClass('d-none'); + this.noAiElement.addClass('d-none'); + } + + private handleCompilationResult(result: CompilationResult): void { + if (this.isInitializing) { + // Store for processing after initialization completes + this.pendingCompilationResult = result; + return; + } + + if (result.code !== 0) { + this.contentElement.text('Cannot explain: Compilation failed'); + return; + } + + if (result.source && checkForNoAiDirective(result.source)) { + this.showNoAiDirective(); + return; + } + + if (ExplainView.consentGiven) { + void this.fetchExplanation(); + } else { + this.showConsentUI(); + } + } + + private showNoAiDirective(): void { + this.noAiElement.removeClass('d-none'); + this.contentElement.text(''); + } + + private showConsentUI(): void { + this.consentElement.removeClass('d-none'); + this.contentElement.text('Claude needs your consent to explain this code.'); + } + + override onCompileResult(id: number, compiler: CompilerInfo, result: CompilationResult): void { + if (id !== this.compilerInfo.compilerId) return; + + this.compiler = compiler; + this.lastResult = result; + this.isAwaitingInitialResults = false; + + this.hideSpecialUIElements(); + this.handleCompilationResult(result); + } + + private setStatusIcon(state: StatusIconState): void { + const config = statusIconConfigs[state]; + this.statusIcon + .removeClass() + .addClass(config.classes) + .css('color', config.color) + .attr('aria-label', config.ariaLabel); + } + + private showLoading(): void { + this.setStatusIcon(StatusIconState.Loading); + this.contentElement.text('Generating explanation...'); + } + + private hideLoading(): void { + this.setStatusIcon(StatusIconState.Hidden); + } + + private showSuccess(): void { + this.setStatusIcon(StatusIconState.Success); + } + + private showError(): void { + this.setStatusIcon(StatusIconState.Error); + } + + private showBottomBar(): void { + this.bottomBarElement.removeClass('d-none'); + } + + private updateStatsInBottomBar( + data: ClaudeExplainResponse, + clientCacheHit: boolean, + serverCacheHit: boolean, + ): void { + const stats = formatStatsText(data, clientCacheHit, serverCacheHit); + if (stats.length > 0) { + this.statsElement.text(stats.join(' | ')); + } + } + + private displayCachedResult(cachedResult: ClaudeExplainResponse): void { + this.hideLoading(); + this.showSuccess(); + this.renderMarkdown(cachedResult.explanation); + this.showBottomBar(); + + if (cachedResult.usage) { + this.updateStatsInBottomBar(cachedResult, true, false); + } + } + + private async fetchFromAPI(payload: ExplainRequest): Promise { + const response = await window.fetch(this.explainApiEndpoint, { + method: 'POST', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + throw new Error(`Server returned ${response.status} ${response.statusText}`); + } + + return response.json() as Promise; + } + + private getExplainContext(): ExplainContext { + return { + lastResult: this.lastResult, + compiler: this.compiler, + selectedAudience: this.selectedAudience, + selectedExplanation: this.selectedExplanation, + explainApiEndpoint: this.explainApiEndpoint, + consentGiven: ExplainView.consentGiven, + availableOptions: ExplainView.availableOptions, + }; + } + + private processExplanationResponse(data: ClaudeExplainResponse, cacheKey: string): void { + this.hideLoading(); + + if (data.status === 'error') { + this.showError(); + this.contentElement.text(`Error: ${data.message || 'Unknown error'}`); + return; + } + + this.showSuccess(); + ExplainView.cache!.set(cacheKey, data); + this.renderMarkdown(data.explanation); + this.showBottomBar(); + + if (data.usage) { + this.updateStatsInBottomBar(data, false, data.cached); + } + } + + private async fetchExplanation(bypassCache = false): Promise { + const context = this.getExplainContext(); + const validationResult = validateExplainPreconditions(context); + + if (!validationResult.success) { + switch (validationResult.errorCode) { + case ValidationErrorCode.NO_AI_DIRECTIVE_FOUND: + this.hideLoading(); + this.noAiElement.removeClass('d-none'); + this.contentElement.text(''); + break; + case ValidationErrorCode.MISSING_REQUIRED_DATA: + // Silent return - this is expected during normal UI flow (before compilation, before consent, etc.) + break; + default: + // Show all other validation errors to help with debugging + this.contentElement.text(`Error: ${validationResult.message}`); + break; + } + return; + } + + this.contentElement.empty(); + this.showLoading(); + + try { + const payload = buildExplainRequest(context, bypassCache); + const cacheKey = generateCacheKey(payload); + + // Check cache first unless bypassing + if (!bypassCache) { + const cachedResult = ExplainView.cache!.get(cacheKey); + if (cachedResult) { + this.displayCachedResult(cachedResult); + return; + } + } + + const data = await this.fetchFromAPI(payload); + this.processExplanationResponse(data, cacheKey); + } catch (error) { + this.handleFetchError(error); + } + } + + private handleFetchError(error: unknown): void { + this.hideLoading(); + this.showError(); + this.contentElement.text(formatErrorMessage(error)); + SentryCapture(error); + } + + private renderMarkdown(markdown: string): void { + this.contentElement.html(formatMarkdown(markdown)); + } + + override resize(): void { + utils.updateAndCalcTopBarHeight(this.domRoot, this.topBar, this.hideable); + } + + override getDefaultPaneName(): string { + return 'Claude Explain'; + } + + override close(): void { + this.eventHub.emit('explainViewClosed', this.compilerInfo.compilerId); + this.eventHub.unsubscribe(); + } +} diff --git a/static/panes/gccdump-view.interfaces.ts b/static/panes/gccdump-view.interfaces.ts index 50a0fd89e..163059ed9 100644 --- a/static/panes/gccdump-view.interfaces.ts +++ b/static/panes/gccdump-view.interfaces.ts @@ -47,6 +47,7 @@ export type GccDumpFiltersState = { gimpleFeOption: boolean; addressOption: boolean; + aliasOption: boolean; blocksOption: boolean; linenoOption: boolean; detailsOption: boolean; diff --git a/static/panes/gccdump-view.ts b/static/panes/gccdump-view.ts index 95b79b222..d3392335c 100644 --- a/static/panes/gccdump-view.ts +++ b/static/panes/gccdump-view.ts @@ -53,6 +53,8 @@ export class GccDump extends MonacoPane; optionAddressTitle: string; + optionAliasButton: JQuery; + optionAliasTitle: string; optionSlimButton: JQuery; optionSlimTitle: string; optionRawButton: JQuery; @@ -190,6 +192,9 @@ export class GccDump extends MonacoPane p:first-child { + margin-top: 0; + } + + > p:last-child { + margin-bottom: 0; + } + } + + // Lists + ul, ol { + padding-left: 2rem; + margin-top: 0.75rem; + margin-bottom: 0.75rem; + } + + li { + margin: 0.25rem 0; + + > p { + margin-top: 0.5rem; + margin-bottom: 0.5rem; + } + + + li { + margin-top: 0.25rem; + } + } + + // Paragraphs + p { + margin: 0.75rem 0; + } + + // Horizontal rule + hr { + height: 0.25em; + margin: 1.5rem 0; + padding: 0; + background-color: #e1e4e8; + border: 0; + } + + // Links + a { + color: #0366d6; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + + // Theme adjustments based on CE's dark mode + [data-theme="dark"] & { + color: #c9d1d9; + + h1, h2 { + border-bottom-color: #30363d; + } + + pre, code { + background-color: #161b22; + border-color: #30363d; + } + + code { + background-color: rgba(240, 246, 252, 0.15); + } + + pre code { + background-color: transparent; + } + + table { + th, td { + border-color: #30363d; + } + + th { + background-color: #161b22; + } + + tr:nth-child(2n) { + background-color: #161b22; + } + } + + blockquote { + border-left-color: #30363d; + color: #8b949e; + } + + hr { + background-color: #30363d; + } + + a { + color: #58a6ff; + } + } +} \ No newline at end of file diff --git a/static/styles/themes/custom-golden-layout-themes/one-dark.scss b/static/styles/themes/custom-golden-layout-themes/one-dark.scss index 2362dbe2a..f277c05cb 100644 --- a/static/styles/themes/custom-golden-layout-themes/one-dark.scss +++ b/static/styles/themes/custom-golden-layout-themes/one-dark.scss @@ -23,6 +23,8 @@ $color10: #e06c75; // Appears 2 time // ".lm_dragging" is applied to BODY tag during Drag and is also directly applied to the root of the object being dragged +html[data-theme='one-dark'] { + // Entire GoldenLayout Container, if a background is set, it is visible as color of "pane header" and "splitters" (if these latest has opacity very low) .lm_goldenlayout { background: $color0; @@ -245,3 +247,5 @@ $color10: #e06c75; // Appears 2 time } } } + +} // End html[data-theme='one-dark'] diff --git a/static/styles/themes/custom-golden-layout-themes/pink.scss b/static/styles/themes/custom-golden-layout-themes/pink.scss index 563f2da90..77eeb5b9d 100644 --- a/static/styles/themes/custom-golden-layout-themes/pink.scss +++ b/static/styles/themes/custom-golden-layout-themes/pink.scss @@ -22,6 +22,8 @@ $color10: #ffffff; // Appears 2 time // ".lm_dragging" is applied to BODY tag during Drag and is also directly applied to the root of the object being dragged +html[data-theme='pink'] { + // Entire GoldenLayout Container, if a background is set, it is visible as color of "pane header" and "splitters" (if these latest has opacity very low) .lm_goldenlayout { background: $color0; @@ -227,3 +229,5 @@ $color10: #ffffff; // Appears 2 time } } } + +} // End html[data-theme='pink'] diff --git a/static/styles/themes/dark-theme.scss b/static/styles/themes/dark-theme.scss index ad6ea0102..842dd7e01 100644 --- a/static/styles/themes/dark-theme.scss +++ b/static/styles/themes/dark-theme.scss @@ -1,6 +1,7 @@ @use 'sass:color'; @use 'ansi-dark'; -@import '~golden-layout/src/css/goldenlayout-dark-theme'; + +html[data-theme='dark'] { ::-webkit-scrollbar { background: color.scale(#1e1e1e, $lightness: 10%); @@ -725,3 +726,21 @@ textarea.form-control { filter: invert(100%); } } + +.explain-box { + background-color: #333; + border-color: #555; + color: #eee; +} + +.explain-bottom-bar { + background-color: #2d2d2d !important; + color: #eee; +} + +.ai-disclaimer.bg-warning { + background-color: #664d03 !important; + color: #ffda6a !important; +} + +} // End html[data-theme='dark'] diff --git a/static/styles/themes/default-theme.scss b/static/styles/themes/default-theme.scss index 1014df939..c3f810bec 100644 --- a/static/styles/themes/default-theme.scss +++ b/static/styles/themes/default-theme.scss @@ -1,5 +1,6 @@ @use 'sass:color'; -@import '~golden-layout/src/css/goldenlayout-light-theme'; + +html[data-theme='default'] { /* * replace low res golden-layout icons with svg recreations to improve high DPI displays @@ -492,3 +493,5 @@ div.argmenuitem span.argdescription { } } } + +} // End html[data-theme='default'] diff --git a/static/styles/themes/one-dark-theme.scss b/static/styles/themes/one-dark-theme.scss index 7357e7e19..9f502ab57 100644 --- a/static/styles/themes/one-dark-theme.scss +++ b/static/styles/themes/one-dark-theme.scss @@ -13,6 +13,15 @@ $base: #282c34; $dark: #21252b; $darker: #1e1f22; +html[data-theme='one-dark'] { +// Export as CSS custom properties for use in explorer.scss +--light: #{$light}; +--lighter: #{$lighter}; +--lightest: #{$lightest}; +--base: #{$base}; +--dark: #{$dark}; +--darker: #{$darker}; + ::-webkit-scrollbar { background: $lighter; } @@ -233,7 +242,7 @@ textarea.form-control { .currentCursorPosition { color: #eee; - background-color: opacify($dark, 0.8); + background-color: color.adjust($dark, $alpha: 0.8); } .form-select { @@ -792,3 +801,21 @@ textarea.form-control { filter: invert(100%); } } + +.explain-box { + background-color: #282c34; + border-color: #4b5263; + color: #abb2bf; +} + +.explain-bottom-bar { + background-color: $dark !important; + color: #abb2bf; +} + +.ai-disclaimer.bg-warning { + background-color: #664d03 !important; + color: #ffda6a !important; +} + +} // End html[data-theme='one-dark'] diff --git a/static/styles/themes/pink-theme.scss b/static/styles/themes/pink-theme.scss index cf60519b7..1aef3c10a 100644 --- a/static/styles/themes/pink-theme.scss +++ b/static/styles/themes/pink-theme.scss @@ -9,6 +9,13 @@ $base: #fac6fa; $dark: #e3a5e3; $darker: #e787e7; +html[data-theme='pink'] { +// Export as CSS custom properties for use in explorer.scss +--lighter: #{$lighter}; +--base: #{$base}; +--dark: #{$dark}; +--darker: #{$darker}; + ::-webkit-scrollbar { background: color.adjust(#1e1e1e, $lightness: 10%); } @@ -154,7 +161,7 @@ textarea.form-control { .card { background-color: $lighter !important; - color: #212529 !important; + color: hsl(210, 11%, 15%) !important; border-color: $dark; } @@ -189,6 +196,37 @@ textarea.form-control { background-color: color.adjust($dark, $alpha: 0.8); } +.opt-pipeline-body { + scrollbar-color: #e75480 #f0c0e0; // thumb color, track color + .passes-column { + color: #212529; + .passes-list div { + &.firstMachinePass { + &:before { + background: white; + } + } + &:hover, + &.active { + background: color.adjust(#f5f5f5, $lightness: 5%); + } + &.changed { + color: #148624; + } + } + } + .passes-column-resizer { + background-color: #f4f4f4; + transition: background-color 200ms ease; + &:hover { + background-color: #bbbbbb; + } + } + .monaco-placeholder { + border-left: 1px solid #d2d3d4; + } +} + .form-select { background-color: #76a1c8 !important; } @@ -726,3 +764,19 @@ textarea.form-control { } } } + +.explain-box { + background-color: #fde5fd; + border-color: #e3a5e3; +} + +.explain-bottom-bar { + background-color: #e3a5e3 !important; +} + +.ai-disclaimer.bg-warning { + background-color: #e787e7 !important; + color: #3c3c3f !important; +} + +} // End html[data-theme='pink'] diff --git a/static/tests/panes/explain-view-utils-tests.ts b/static/tests/panes/explain-view-utils-tests.ts new file mode 100644 index 000000000..b47ad1089 --- /dev/null +++ b/static/tests/panes/explain-view-utils-tests.ts @@ -0,0 +1,527 @@ +// Copyright (c) 2025, Compiler Explorer Authors +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +import {beforeEach, describe, expect, it} from 'vitest'; + +import {CompilationResult} from '../../../types/compilation/compilation.interfaces.js'; +import {CompilerInfo} from '../../../types/compiler.interfaces.js'; +import {ClaudeExplainResponse, ExplainRequest} from '../../panes/explain-view.interfaces.js'; +import { + buildExplainRequest, + checkForNoAiDirective, + createPopoverContent, + ExplainContext, + formatErrorMessage, + formatMarkdown, + formatStatsText, + generateCacheKey, + ValidationErrorCode, + validateExplainPreconditions, +} from '../../panes/explain-view-utils.js'; + +// Test utilities for creating fake objects for testing +function createFakeCompilerInfo(overrides: Partial = {}): CompilerInfo { + return { + id: 'gcc', + exe: '/usr/bin/gcc', + name: 'GCC 12.2.0', + version: '12.2.0', + fullVersion: 'gcc (GCC) 12.2.0', + baseName: 'gcc', + alias: ['gcc'], + options: '-O2', + versionFlag: ['--version'], + lang: 'c++', + group: 'cpp', + groupName: 'C++', + compilerType: 'gcc', + semver: '12.2.0', + libsArr: [], + unwantedLibsArr: [], + tools: {}, + supportedLibraries: {}, + includeFlag: '-I', + notification: '', + instructionSet: 'amd64', + supportsAsmDocs: false, + supportsLibraryCodeFilter: false, + supportsOptOutput: false, + supportedOpts: [], + nvccProps: undefined, + ...overrides, + } as CompilerInfo; +} + +function createFakeCompilationResult(overrides: Partial = {}): CompilationResult { + return { + code: 0, + timedOut: false, + okToCache: true, + source: 'int main() { return 0; }', + compilationOptions: ['-O2', '-g'], + instructionSet: 'amd64', + asm: [ + {text: 'main:', opcodes: [], address: 0x1000}, + {text: ' ret', opcodes: ['c3'], address: 0x1001}, + ], + stdout: [], + stderr: [], + ...overrides, + }; +} + +function createFakeAvailableOptions() { + return { + audience: [ + {value: 'beginner', description: 'New to programming'}, + {value: 'intermediate', description: 'Some programming experience'}, + {value: 'expert', description: 'Experienced programmer'}, + ], + explanation: [ + {value: 'assembly', description: 'Explain the assembly code'}, + {value: 'optimization', description: 'Explain compiler optimizations'}, + ], + }; +} + +describe('ExplainView Utils - Pure Functions', () => { + let testContext: ExplainContext; + let fakeCompiler: CompilerInfo; + let fakeResult: CompilationResult; + + beforeEach(() => { + fakeCompiler = createFakeCompilerInfo(); + fakeResult = createFakeCompilationResult(); + testContext = { + lastResult: fakeResult, + compiler: fakeCompiler, + selectedAudience: 'beginner', + selectedExplanation: 'assembly', + explainApiEndpoint: 'https://api.example.com/explain', + consentGiven: true, + availableOptions: createFakeAvailableOptions(), + }; + }); + + // Helper function to test validation failures + function expectValidationFailure(expectedErrorCode: ValidationErrorCode, expectedMessage: string) { + const result = validateExplainPreconditions(testContext); + expect(result.success).toBe(false); + if (!result.success) { + expect(result.errorCode).toBe(expectedErrorCode); + expect(result.message).toBe(expectedMessage); + } + } + + describe('validateExplainPreconditions()', () => { + it('should pass with valid context', () => { + const result = validateExplainPreconditions(testContext); + expect(result.success).toBe(true); + }); + + it('should return error when lastResult is missing', () => { + testContext.lastResult = null; + expectValidationFailure( + ValidationErrorCode.MISSING_REQUIRED_DATA, + 'Missing required data: compilation result, consent, or compiler info', + ); + }); + + it('should return error when consent is not given', () => { + testContext.consentGiven = false; + expectValidationFailure( + ValidationErrorCode.MISSING_REQUIRED_DATA, + 'Missing required data: compilation result, consent, or compiler info', + ); + }); + + it('should return error when compiler is missing', () => { + testContext.compiler = null; + expectValidationFailure( + ValidationErrorCode.MISSING_REQUIRED_DATA, + 'Missing required data: compilation result, consent, or compiler info', + ); + }); + + it('should return error when options are not available', () => { + testContext.availableOptions = null; + expectValidationFailure(ValidationErrorCode.OPTIONS_NOT_AVAILABLE, 'Explain options not available'); + }); + + it('should return error when API endpoint is not configured', () => { + testContext.explainApiEndpoint = ''; + expectValidationFailure( + ValidationErrorCode.API_ENDPOINT_NOT_CONFIGURED, + 'Claude Explain API endpoint not configured', + ); + }); + + it('should return error when no-ai directive is found', () => { + testContext.lastResult!.source = 'int main() { /* no-ai */ return 0; }'; + expectValidationFailure(ValidationErrorCode.NO_AI_DIRECTIVE_FOUND, 'no-ai directive found in source code'); + }); + }); + + describe('buildExplainRequest()', () => { + it('should build complete payload with all fields', () => { + const request = buildExplainRequest(testContext, false); + + expect(request).toEqual({ + language: 'c++', + compiler: 'GCC 12.2.0', + code: 'int main() { return 0; }', + compilationOptions: ['-O2', '-g'], + instructionSet: 'amd64', + asm: [ + {text: 'main:', opcodes: [], address: 0x1000}, + {text: ' ret', opcodes: ['c3'], address: 0x1001}, + ], + audience: 'beginner', + explanation: 'assembly', + }); + }); + + it('should handle missing optional fields with defaults', () => { + testContext.lastResult = createFakeCompilationResult({ + source: undefined, + compilationOptions: undefined, + instructionSet: undefined, + asm: undefined, + }); + + const request = buildExplainRequest(testContext, false); + + expect(request).toEqual({ + language: 'c++', + compiler: 'GCC 12.2.0', + code: '', + compilationOptions: [], + instructionSet: 'amd64', + asm: [], + audience: 'beginner', + explanation: 'assembly', + }); + }); + + it('should include bypassCache flag when true', () => { + const request = buildExplainRequest(testContext, true); + expect(request.bypassCache).toBe(true); + }); + + it('should handle non-array asm field', () => { + testContext.lastResult!.asm = 'some string content'; + const request = buildExplainRequest(testContext, false); + expect(request.asm).toEqual([]); + }); + + it('should throw when compiler is missing', () => { + testContext.compiler = null; + expect(() => buildExplainRequest(testContext, false)).toThrow('Missing compiler or compilation result'); + }); + + it('should throw when lastResult is missing', () => { + testContext.lastResult = null; + expect(() => buildExplainRequest(testContext, false)).toThrow('Missing compiler or compilation result'); + }); + }); + + describe('checkForNoAiDirective()', () => { + it('should return false for normal code', () => { + const result = checkForNoAiDirective('int main() { return 0; }'); + expect(result).toBe(false); + }); + + it('should detect case-insensitive no-ai directive', () => { + expect(checkForNoAiDirective('// NO-AI directive')).toBe(true); + expect(checkForNoAiDirective('// no-ai directive')).toBe(true); + expect(checkForNoAiDirective('// No-Ai directive')).toBe(true); + }); + + it('should detect no-ai in various contexts', () => { + expect(checkForNoAiDirective('/* no-ai explanation not wanted */')).toBe(true); + expect(checkForNoAiDirective('int main() { /* no-ai */ return 0; }')).toBe(true); + expect(checkForNoAiDirective('# no-ai Python comment')).toBe(true); + }); + + it('should handle edge cases', () => { + expect(checkForNoAiDirective('')).toBe(false); + expect(checkForNoAiDirective(' ')).toBe(false); + expect(checkForNoAiDirective('no ai (without hyphen)')).toBe(false); + }); + }); + + describe('generateCacheKey()', () => { + let testPayload: ExplainRequest; + + beforeEach(() => { + testPayload = { + language: 'c++', + compiler: 'GCC 12.2.0', + code: 'int main() { return 0; }', + compilationOptions: ['-O2'], + instructionSet: 'amd64', + asm: [{text: 'main:', opcodes: [], address: 0x1000}], + audience: 'beginner', + explanation: 'assembly', + }; + }); + + it('should generate consistent keys for same input', () => { + const key1 = generateCacheKey(testPayload); + const key2 = generateCacheKey(testPayload); + expect(key1).toBe(key2); + }); + + it('should generate different keys for different inputs', () => { + const key1 = generateCacheKey(testPayload); + + const modifiedPayload = {...testPayload, audience: 'expert'}; + const key2 = generateCacheKey(modifiedPayload); + + expect(key1).not.toBe(key2); + }); + + it('should include all relevant fields in cache key', () => { + const originalKey = generateCacheKey(testPayload); + + // Test that changing each field changes the key + const fieldsToTest = ['language', 'compiler', 'code', 'instructionSet', 'audience', 'explanation'] as const; + + fieldsToTest.forEach(field => { + const modifiedPayload = {...testPayload}; + (modifiedPayload as any)[field] = `modified_${field}`; + const modifiedKey = generateCacheKey(modifiedPayload); + expect(modifiedKey).not.toBe(originalKey); + }); + }); + + it('should handle empty compilation options', () => { + const payloadWithEmptyOptions = {...testPayload, compilationOptions: []}; + expect(() => generateCacheKey(payloadWithEmptyOptions)).not.toThrow(); + }); + }); + + describe('formatMarkdown()', () => { + it('should convert basic markdown to HTML', () => { + const markdown = '# Hello\n\nThis is **bold** text.'; + const html = formatMarkdown(markdown); + + expect(html).toContain('

Hello

'); + expect(html).toContain('bold'); + }); + + it('should handle GitHub flavored markdown', () => { + const markdown = '```cpp\nint main() {}\n```'; + const html = formatMarkdown(markdown); + + expect(html).toContain(''); + expect(html).toContain('int main() {}'); + }); + + it('should convert line breaks to
tags', () => { + const markdown = 'Line 1\nLine 2'; + const html = formatMarkdown(markdown); + + expect(html).toContain('
'); + }); + + it('should handle empty input', () => { + expect(formatMarkdown('')).toBe(''); + }); + }); + + describe('formatStatsText()', () => { + let fakeResponse: ClaudeExplainResponse; + + beforeEach(() => { + fakeResponse = { + status: 'success', + explanation: 'Test explanation', + cached: false, + usage: { + inputTokens: 100, + outputTokens: 50, + totalTokens: 150, + }, + model: 'claude-3-sonnet', + cost: { + inputCost: 0.001, + outputCost: 0.002, + totalCost: 0.003, + }, + }; + }); + + it('should format complete stats with client cache hit', () => { + const stats = formatStatsText(fakeResponse, true, false); + + expect(stats).toEqual(['Cached (client)', 'Model: claude-3-sonnet', 'Tokens: 150', 'Cost: $0.003000']); + }); + + it('should format complete stats with server cache hit', () => { + const stats = formatStatsText(fakeResponse, false, true); + + expect(stats).toEqual(['Cached (server)', 'Model: claude-3-sonnet', 'Tokens: 150', 'Cost: $0.003000']); + }); + + it('should format complete stats with fresh response', () => { + const stats = formatStatsText(fakeResponse, false, false); + + expect(stats).toEqual(['Fresh', 'Model: claude-3-sonnet', 'Tokens: 150', 'Cost: $0.003000']); + }); + + it('should handle missing optional fields', () => { + const minimalResponse: ClaudeExplainResponse = { + status: 'success', + explanation: 'Test explanation', + cached: false, + usage: { + inputTokens: 100, + outputTokens: 50, + totalTokens: 150, + }, + }; + + const stats = formatStatsText(minimalResponse, false, false); + + expect(stats).toEqual(['Fresh', 'Tokens: 150']); + }); + + it('should return empty array when usage is missing', () => { + const noUsageResponse: ClaudeExplainResponse = { + status: 'success', + explanation: 'Test explanation', + cached: false, + model: 'claude-3-sonnet', + }; + const stats = formatStatsText(noUsageResponse, false, false); + + expect(stats).toEqual([]); + }); + + it('should handle zero cost correctly', () => { + const zeroCostResponse: ClaudeExplainResponse = { + status: 'success', + explanation: 'Test explanation', + cached: false, + usage: { + inputTokens: 100, + outputTokens: 50, + totalTokens: 150, + }, + cost: { + inputCost: 0, + outputCost: 0, + totalCost: 0, + }, + }; + + const stats = formatStatsText(zeroCostResponse, false, false); + + expect(stats).toEqual(['Fresh', 'Tokens: 150', 'Cost: $0.000000']); + }); + }); + + describe('createPopoverContent()', () => { + it('should create HTML content for options list', () => { + const options = [ + {value: 'beginner', description: 'New to programming'}, + {value: 'expert', description: 'Experienced programmer'}, + ]; + + const html = createPopoverContent(options); + + expect(html).toContain("
Beginner: New to programming
"); + expect(html).toContain("
Expert: Experienced programmer
"); + }); + + it('should handle empty options list', () => { + const html = createPopoverContent([]); + expect(html).toBe(''); + }); + + it('should capitalize first letter of option values', () => { + const options = [{value: 'assembly', description: 'Explain assembly code'}]; + const html = createPopoverContent(options); + + expect(html).toContain('Assembly:'); + }); + + it('should handle special characters in descriptions', () => { + const options = [{value: 'test', description: 'Description with "quotes" & symbols'}]; + const html = createPopoverContent(options); + + expect(html).toContain('Description with "quotes" & symbols'); + }); + }); + + describe('formatErrorMessage()', () => { + it('should format Error object with message', () => { + const error = new Error('Something went wrong'); + const formatted = formatErrorMessage(error); + + expect(formatted).toBe('Error: Something went wrong'); + }); + + it('should format string error', () => { + const error = 'Network timeout'; + const formatted = formatErrorMessage(error); + + expect(formatted).toBe('Error: Network timeout'); + }); + + it('should format number error', () => { + const error = 404; + const formatted = formatErrorMessage(error); + + expect(formatted).toBe('Error: 404'); + }); + + it('should format null/undefined errors', () => { + expect(formatErrorMessage(null)).toBe('Error: null'); + expect(formatErrorMessage(undefined)).toBe('Error: undefined'); + }); + + it('should format object error with message property', () => { + const error = {code: 500, message: 'Internal server error'}; + const formatted = formatErrorMessage(error); + + expect(formatted).toBe('Error: Internal server error'); + }); + + it('should format object error with error property', () => { + const error = {status: 'failed', error: 'Network timeout'}; + const formatted = formatErrorMessage(error); + + expect(formatted).toBe('Error: Network timeout'); + }); + + it('should format generic object error as JSON', () => { + const error = {code: 500, details: 'Something went wrong'}; + const formatted = formatErrorMessage(error); + + expect(formatted).toBe('Error: {"code":500,"details":"Something went wrong"}'); + }); + }); +}); diff --git a/test/analysis-tests.ts b/test/analysis-tests.ts index 42f56cdae..bfbe78996 100644 --- a/test/analysis-tests.ts +++ b/test/analysis-tests.ts @@ -100,6 +100,7 @@ describe('LLVM-mca tool definition', () => { }, lang: 'analysis', disabledFilters: 'labels,directives,debugCalls' as any, + exe: 'clang', }); expect(new AnalysisTool(info, ce).getInfo().disabledFilters).toEqual(['labels', 'directives', 'debugCalls']); }); diff --git a/test/android-tests.ts b/test/android-tests.ts index 90484cb68..11824cec2 100644 --- a/test/android-tests.ts +++ b/test/android-tests.ts @@ -40,13 +40,13 @@ const languages = { }; const androidJavaInfo = { - exe: null, + exe: 'java', remote: true, lang: languages.androidJava.id, } as unknown as CompilerInfo; const androidKotlinInfo = { - exe: null, + exe: 'kotlin', remote: true, lang: languages.androidKotlin.id, } as unknown as CompilerInfo; diff --git a/test/base-compiler-tests.ts b/test/base-compiler-tests.ts index ec7eb6900..4bc149b8d 100644 --- a/test/base-compiler-tests.ts +++ b/test/base-compiler-tests.ts @@ -129,6 +129,7 @@ describe('Compiler execution', () => { supportsExecute: true, supportsBinary: true, options: '--hello-abc -I"/opt/some thing 1.0/include" -march="magic 8bit"', + exe: 'compiler-exe', }); const win32CompilerInfo = makeFakeCompilerInfo({ remote: { @@ -142,6 +143,7 @@ describe('Compiler execution', () => { supportsExecute: true, supportsBinary: true, options: '/std=c++17 /I"C:/program files (x86)/Company name/Compiler 1.2.3/include" /D "MAGIC=magic 8bit"', + exe: 'compiler.exe', }); const noExecuteSupportCompilerInfo = makeFakeCompilerInfo({ remote: { @@ -153,6 +155,7 @@ describe('Compiler execution', () => { lang: 'c++', ldPath: [], libPath: [], + exe: 'g++', }); const someOptionsCompilerInfo = makeFakeCompilerInfo({ remote: { @@ -167,6 +170,7 @@ describe('Compiler execution', () => { supportsExecute: true, supportsBinary: true, options: '--hello-abc -I"/opt/some thing 1.0/include"', + exe: 'clang++', }); beforeAll(() => { @@ -681,6 +685,7 @@ describe('getDefaultExecOptions', () => { ldPath: [], libPath: [], extraPath: ['/tmp/p1', '/tmp/p2'], + exe: 'g++', }); beforeAll(() => { diff --git a/test/common-utils-tests.ts b/test/common-utils-tests.ts index 807f8854f..f301ed2f5 100644 --- a/test/common-utils-tests.ts +++ b/test/common-utils-tests.ts @@ -24,7 +24,7 @@ import {describe, expect, it} from 'vitest'; -import {addDigitSeparator, escapeHTML, splitArguments} from '../shared/common-utils.js'; +import {addDigitSeparator, capitaliseFirst, escapeHTML, splitArguments} from '../shared/common-utils.js'; describe('HTML Escape Test Cases', () => { it('should prevent basic injection', () => { @@ -167,3 +167,29 @@ describe('argument splitting', () => { expect(splitArguments('"hello \\"world\\" \\\\"')).toEqual(['hello "world" \\']); }); }); + +describe('capitalise first', () => { + it('should capitalise normal strings', () => { + expect(capitaliseFirst('hello')).toEqual('Hello'); + expect(capitaliseFirst('world')).toEqual('World'); + }); + + it('should handle empty strings', () => { + expect(capitaliseFirst('')).toEqual(''); + }); + + it('should handle single characters', () => { + expect(capitaliseFirst('a')).toEqual('A'); + expect(capitaliseFirst('z')).toEqual('Z'); + }); + + it('should handle already capitalised strings', () => { + expect(capitaliseFirst('Hello')).toEqual('Hello'); + expect(capitaliseFirst('WORLD')).toEqual('WORLD'); + }); + + it('should handle non-alphabetic first characters', () => { + expect(capitaliseFirst('123abc')).toEqual('123abc'); + expect(capitaliseFirst('!hello')).toEqual('!hello'); + }); +}); diff --git a/test/compilers/argument-parsers-tests.ts b/test/compilers/argument-parsers-tests.ts index 0b6d01057..a431fecf5 100644 --- a/test/compilers/argument-parsers-tests.ts +++ b/test/compilers/argument-parsers-tests.ts @@ -49,13 +49,18 @@ function makeCompiler(stdout?: string, stderr?: string, code?: number) { describe('option parser', () => { it('should do nothing for the base parser', async () => { const compiler = makeCompiler(); - await expect(BaseParser.parse(compiler)).resolves.toEqual(compiler); + const parser = new BaseParser(compiler); + await expect(parser.parse()).resolves.toEqual(compiler); }); it('should handle empty options', async () => { - await expect(BaseParser.getOptions(makeCompiler(), '')).resolves.toEqual({}); + const compiler = makeCompiler(); + const parser = new BaseParser(compiler); + await expect(parser.getOptions('')).resolves.toEqual({}); }); it('should parse single-dash options', async () => { - await expect(BaseParser.getOptions(makeCompiler('-foo\n'), '')).resolves.toEqual({ + const compiler = makeCompiler('-foo\n'); + const parser = new BaseParser(compiler); + await expect(parser.getOptions('')).resolves.toEqual({ '-foo': { description: '', timesused: 0, @@ -63,7 +68,9 @@ describe('option parser', () => { }); }); it('should parse double-dash options', async () => { - await expect(BaseParser.getOptions(makeCompiler('--foo\n'), '')).resolves.toEqual({ + const compiler = makeCompiler('--foo\n'); + const parser = new BaseParser(compiler); + await expect(parser.getOptions('')).resolves.toEqual({ '--foo': { description: '', timesused: 0, @@ -71,7 +78,9 @@ describe('option parser', () => { }); }); it('should parse stderr options', async () => { - await expect(BaseParser.getOptions(makeCompiler('', '--bar=monkey\n'), '')).resolves.toEqual({ + const compiler = makeCompiler('', '--bar=monkey\n'); + const parser = new BaseParser(compiler); + await expect(parser.getOptions('')).resolves.toEqual({ '--bar=monkey': { description: '', timesused: 0, @@ -79,46 +88,56 @@ describe('option parser', () => { }); }); it('handles non-option text', async () => { - await expect(BaseParser.getOptions(makeCompiler('-foo=123\nthis is a fish\n-badger=123'), '')).resolves.toEqual( - { - '-foo=123': {description: 'this is a fish', timesused: 0}, - '-badger=123': {description: '', timesused: 0}, - }, - ); + const compiler = makeCompiler('-foo=123\nthis is a fish\n-badger=123'); + const parser = new BaseParser(compiler); + await expect(parser.getOptions('')).resolves.toEqual({ + '-foo=123': {description: 'this is a fish', timesused: 0}, + '-badger=123': {description: '', timesused: 0}, + }); }); it('should ignore if errors occur', async () => { - await expect(BaseParser.getOptions(makeCompiler('--foo\n', '--bar\n', 1), '')).resolves.toEqual({}); + const compiler = makeCompiler('--foo\n', '--bar\n', 1); + const parser = new BaseParser(compiler); + await expect(parser.getOptions('')).resolves.toEqual({}); }); }); describe('gcc parser', () => { it('should handle empty options', async () => { - const result = await GCCParser.parse(makeCompiler()); + const compiler = makeCompiler(); + const parser = new GCCParser(compiler); + const result = await parser.parse(); expect(result.compiler).not.toHaveProperty('supportsGccDump'); expect(result.compiler.options).toEqual(''); }); it('should handle options', async () => { - const result = await GCCParser.parse(makeCompiler('-masm=intel\n-fdiagnostics-color=[blah]\n-fdump-tree-all')); + const compiler = makeCompiler('-masm=intel\n-fdiagnostics-color=[blah]\n-fdump-tree-all'); + const parser = new GCCParser(compiler); + const result = await parser.parse(); expect(result.compiler.supportsGccDump).toBe(true); expect(result.compiler.supportsIntel).toBe(true); expect(result.compiler.intelAsm).toEqual('-masm=intel'); expect(result.compiler.options).toEqual('-fdiagnostics-color=always'); }); it('should handle undefined options', async () => { - const result = await GCCParser.parse(makeCompiler('-fdiagnostics-color=[blah]')); + const compiler = makeCompiler('-fdiagnostics-color=[blah]'); + const parser = new GCCParser(compiler); + const result = await parser.parse(); expect(result.compiler.options).toEqual('-fdiagnostics-color=always'); }); }); describe('clang parser', () => { it('should handle empty options', async () => { - const result = await ClangParser.parse(makeCompiler()); + const compiler = makeCompiler(); + const parser = new ClangParser(compiler); + const result = await parser.parse(); expect(result.compiler.options).toEqual(''); }); it('should handle options', async () => { - const result = await ClangParser.parse( - makeCompiler(' -fno-crash-diagnostics\n -fsave-optimization-record\n -fcolor-diagnostics'), - ); + const compiler = makeCompiler(' -fno-crash-diagnostics\n -fsave-optimization-record\n -fcolor-diagnostics'); + const parser = new ClangParser(compiler); + const result = await parser.parse(); expect(result.compiler.supportsOptOutput).toBe(true); expect(result.compiler.optArg).toEqual('-fsave-optimization-record'); expect(result.compiler.options).toContain('-fcolor-diagnostics'); @@ -129,7 +148,9 @@ describe('clang parser', () => { describe('pascal parser', () => { it('should handle empty options', async () => { - const result = await PascalParser.parse(makeCompiler()); + const compiler = makeCompiler(); + const parser = new PascalParser(compiler); + const result = await parser.parse(); expect(result.compiler.options).toEqual(''); }); }); @@ -144,7 +165,8 @@ describe('popular compiler arguments', () => { }); it('should return 5 arguments', async () => { - const result = await ClangParser.parse(compiler); + const parser = new ClangParser(compiler); + const result = await parser.parse(); expect(result.possibleArguments.getPopularArguments()).toEqual({ '-O': {description: 'Optimization level', timesused: 0}, '-fcolor-diagnostics': {description: '', timesused: 0}, @@ -155,7 +177,8 @@ describe('popular compiler arguments', () => { }); it('should return arguments except the ones excluded', async () => { - const result = await ClangParser.parse(compiler); + const parser = new ClangParser(compiler); + const result = await parser.parse(); expect(result.possibleArguments.getPopularArguments(['-O3', '--hello'])).toEqual({ '-fcolor-diagnostics': {description: '', timesused: 0}, '-fsave-optimization-record': {description: '', timesused: 0}, @@ -166,7 +189,8 @@ describe('popular compiler arguments', () => { }); it('should be able to exclude special params with assignments', async () => { - const result = await ClangParser.parse(compiler); + const parser = new ClangParser(compiler); + const result = await parser.parse(); expect(result.possibleArguments.getPopularArguments(['-std=c++14', '-g', '--hello'])).toEqual({ '-O': {description: 'Optimization level', timesused: 0}, '-fcolor-diagnostics': {description: '', timesused: 0}, @@ -188,7 +212,9 @@ describe('VC argument parser', () => { ' /something: Something Else', ' /etc Etcetera', ]; - const stdvers = VCParser.extractPossibleStdvers(lines); + const compiler = makeCompiler(); + const parser = new VCParser(compiler); + const stdvers = parser.extractPossibleStdvers(lines); expect(stdvers).toEqual([ { name: 'c++14: ISO/IEC 14882:2014 (default)', @@ -221,7 +247,9 @@ describe('ICC argument parser', () => { ' gnu++98 conforms to 1998 ISO C++ standard plus GNU extensions', '-etc', ]; - const stdvers = ICCParser.extractPossibleStdvers(lines); + const compiler = makeCompiler(); + const parser = new ICCParser(compiler); + const stdvers = parser.extractPossibleStdvers(lines); expect(stdvers).toEqual([ { name: 'c99: conforms to ISO/IEC 9899:1999 standard for C programs', @@ -255,7 +283,9 @@ describe('TableGen argument parser', () => { ' --gen-x86-mnemonic-tables - Generate X86...', ' --no-warn-on-unused-template-args - Disable...', ]; - const actions = TableGenParser.extractPossibleActions(lines); + const compiler = makeCompiler(); + const parser = new TableGenParser(compiler); + const actions = parser.extractPossibleActions(lines); expect(actions).toEqual([ {name: 'gen-attrs: Generate attributes', value: '--gen-attrs'}, {name: 'print-detailed-records: Print full details...', value: '--print-detailed-records'}, @@ -278,7 +308,8 @@ describe('Rust editions parser', () => { ' stable edition is 2024.', ]; const compiler = makeCompiler(lines.join('\n')); - const editions = await RustParser.getPossibleEditions(compiler); + const parser = new RustParser(compiler); + const editions = await parser.getPossibleEditions(); expect(editions).toEqual(['2015', '2018', '2021', '2024', 'future']); }); @@ -294,7 +325,8 @@ describe('Rust editions parser', () => { ' compiling code.', ]; const compiler = makeCompiler(lines.join('\n')); - const editions = await RustParser.getPossibleEditions(compiler); + const parser = new RustParser(compiler); + const editions = await parser.getPossibleEditions(); expect(editions).toEqual(['2015', '2018']); }); }); @@ -312,9 +344,10 @@ describe('Rust help message parser', () => { ' -W, --warn OPT Set lint warnings', ]; const compiler = makeCompiler(lines.join('\n')); - await RustParser.parse(compiler); + const parser = new RustParser(compiler); + await parser.parse(); expect(compiler.compiler.supportsTarget).toBe(true); - await expect(RustParser.getOptions(compiler, '--help')).resolves.toEqual({ + await expect(parser.getOptions('--help')).resolves.toEqual({ '-l [KIND[:MODIFIERS]=]NAME[:RENAME]': { description: 'Link the generated crate(s) to the specified native library NAME. The optional KIND can be one of', @@ -344,9 +377,10 @@ describe('Rust help message parser', () => { ' -W, --warn Set lint warnings', ]; const compiler = makeCompiler(lines.join('\n')); - await RustParser.parse(compiler); + const parser = new RustParser(compiler); + await parser.parse(); expect(compiler.compiler.supportsTarget).toBe(true); - await expect(RustParser.getOptions(compiler, '--help')).resolves.toEqual({ + await expect(parser.getOptions('--help')).resolves.toEqual({ '-l [[:]=][:]': { description: 'Link the generated crate(s) to the specified native library NAME. The optional KIND can be one of', diff --git a/test/demangle-cases/bug-660.asm.json b/test/demangle-cases/bug-660.asm.json index e8535090b..9be46a308 100644 --- a/test/demangle-cases/bug-660.asm.json +++ b/test/demangle-cases/bug-660.asm.json @@ -4290,15 +4290,7 @@ "text": "$LASF54:", }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18, - }, - }, - ], + "labels": [], "source": null, "text": " .ascii "main\000"", }, diff --git a/test/demangle-cases/bug-713.asm.json b/test/demangle-cases/bug-713.asm.json index d9c31a906..d08a97e50 100644 --- a/test/demangle-cases/bug-713.asm.json +++ b/test/demangle-cases/bug-713.asm.json @@ -7589,15 +7589,7 @@ "text": ".LASF21:", }, { - "labels": [ - { - "name": "caller1()", - "range": { - "endCol": 27, - "startCol": 18, - }, - }, - ], + "labels": [], "source": null, "text": " .string "caller1()"", }, @@ -7777,15 +7769,7 @@ "text": ".LASF7:", }, { - "labels": [ - { - "name": "Normal::~Normal() [deleting destructor]", - "range": { - "endCol": 57, - "startCol": 18, - }, - }, - ], + "labels": [], "source": null, "text": " .string "Normal::~Normal() [deleting destructor]"", }, @@ -7795,15 +7779,7 @@ "text": ".LASF19:", }, { - "labels": [ - { - "name": "caller2(Normal*)", - "range": { - "endCol": 34, - "startCol": 18, - }, - }, - ], + "labels": [], "source": null, "text": " .string "caller2(Normal*)"", }, @@ -7833,15 +7809,7 @@ "text": ".LASF8:", }, { - "labels": [ - { - "name": "Normal::~Normal() [base object destructor]", - "range": { - "endCol": 60, - "startCol": 18, - }, - }, - ], + "labels": [], "source": null, "text": " .string "Normal::~Normal() [base object destructor]"", }, diff --git a/test/demangler-tests.ts b/test/demangler-tests.ts index 45fc3e311..634e1b886 100644 --- a/test/demangler-tests.ts +++ b/test/demangler-tests.ts @@ -52,7 +52,7 @@ class DummyCompiler extends BaseCompiler { } as unknown as CompilationEnvironment; // using c++ as the compiler needs at least one language - const compiler = makeFakeCompilerInfo({lang: 'c++'}); + const compiler = makeFakeCompilerInfo({lang: 'c++', exe: 'gcc'}); super(compiler, env); } diff --git a/test/filters-cases/6502-square.asm.none.json b/test/filters-cases/6502-square.asm.none.json index 6109cc564..47ca0c943 100644 --- a/test/filters-cases/6502-square.asm.none.json +++ b/test/filters-cases/6502-square.asm.none.json @@ -124,15 +124,7 @@ "text": "" }, { - "labels": [ - { - "name": "_square", - "range": { - "endCol": 55, - "startCol": 48 - } - } - ], + "labels": [], "source": null, "text": " .dbg func, \"square\", \"00\", extern, \"_square\"" }, diff --git a/test/filters-cases/arm-hellow.asm.none.json b/test/filters-cases/arm-hellow.asm.none.json index 7019374eb..c1fcce6b4 100644 --- a/test/filters-cases/arm-hellow.asm.none.json +++ b/test/filters-cases/arm-hellow.asm.none.json @@ -5323,15 +5323,7 @@ "text": ".LASF55:" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .ascii \"main\\000\"" }, diff --git a/test/filters-cases/bug-1229.asm.none.json b/test/filters-cases/bug-1229.asm.none.json index cc1671416..0ebbf84b2 100644 --- a/test/filters-cases/bug-1229.asm.none.json +++ b/test/filters-cases/bug-1229.asm.none.json @@ -8374,15 +8374,7 @@ "text": ".Linfo_string573:" }, { - "labels": [ - { - "name": "_Z6myfuncv", - "range": { - "endCol": 28, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"_Z6myfuncv\" # string offset=14532" }, @@ -8402,15 +8394,7 @@ "text": ".Linfo_string575:" }, { - "labels": [ - { - "name": "_ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE", - "range": { - "endCol": 207, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"_ZN4ctre18evaluate_recursiveINS_13regex_resultsIPKcJEEES3_S3_Lm0ELm0EJNS_3anyEEJNS_10assert_endENS_8end_markENS_6acceptEEEET_mT0_SA_T1_S9_N4ctll4listIJNS_6repeatIXT2_EXT3_EJDpT4_EEEDpT5_EEE\" # string offset=14550" }, diff --git a/test/filters-cases/bug-1285c.asm.none.json b/test/filters-cases/bug-1285c.asm.none.json index 9685720af..fbc6d34e4 100644 --- a/test/filters-cases/bug-1285c.asm.none.json +++ b/test/filters-cases/bug-1285c.asm.none.json @@ -2808,15 +2808,7 @@ "text": ".LASF1:" }, { - "labels": [ - { - "name": "_Z3bazv", - "range": { - "endCol": 25, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z3bazv\"" }, @@ -2826,15 +2818,7 @@ "text": ".LASF2:" }, { - "labels": [ - { - "name": "_Z3foov", - "range": { - "endCol": 25, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z3foov\"" }, @@ -2884,15 +2868,7 @@ "text": ".LASF11:" }, { - "labels": [ - { - "name": "_Z3barv", - "range": { - "endCol": 25, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z3barv\"" }, diff --git a/test/filters-cases/bug-1307.asm.none.json b/test/filters-cases/bug-1307.asm.none.json index 4c10c7ef8..071e3aa9c 100644 --- a/test/filters-cases/bug-1307.asm.none.json +++ b/test/filters-cases/bug-1307.asm.none.json @@ -49195,15 +49195,7 @@ "text": ".LASF730:" }, { - "labels": [ - { - "name": "_Z8testfuncf", - "range": { - "endCol": 30, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z8testfuncf\"" }, diff --git a/test/filters-cases/bug-192.asm.none.json b/test/filters-cases/bug-192.asm.none.json index 02c5cd056..e7a84bb11 100644 --- a/test/filters-cases/bug-192.asm.none.json +++ b/test/filters-cases/bug-192.asm.none.json @@ -484,15 +484,7 @@ "text": ".Linfo_string8:" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # string offset=175" }, @@ -512,15 +504,7 @@ "text": ".Linfo_string10:" }, { - "labels": [ - { - "name": "__cxx_global_var_init", - "range": { - "endCol": 39, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"__cxx_global_var_init\" # string offset=184" }, @@ -1818,15 +1802,7 @@ "text": " .long 99 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, @@ -1836,15 +1812,7 @@ "text": " .long 124 # DIE offset" }, { - "labels": [ - { - "name": "__cxx_global_var_init", - "range": { - "endCol": 39, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"__cxx_global_var_init\" # External Name" }, diff --git a/test/filters-cases/bug-2164.asm.none.json b/test/filters-cases/bug-2164.asm.none.json index 926921e93..d197b9b5d 100644 --- a/test/filters-cases/bug-2164.asm.none.json +++ b/test/filters-cases/bug-2164.asm.none.json @@ -81,15 +81,7 @@ "text": " .eabi_attribute 14, 0" }, { - "labels": [ - { - "name": "example", - "range": { - "endCol": 25, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .file \"example.3a1fbbbh-cgu.0\"" }, @@ -939,15 +931,7 @@ "text": ".Linfo_string3:" }, { - "labels": [ - { - "name": "example", - "range": { - "endCol": 25, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"example\"" }, @@ -957,15 +941,7 @@ "text": ".Linfo_string4:" }, { - "labels": [ - { - "name": "example", - "range": { - "endCol": 25, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"example::abort\"" }, @@ -1048,15 +1024,7 @@ "text": " .long 38" }, { - "labels": [ - { - "name": "example", - "range": { - "endCol": 25, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"example\"" }, diff --git a/test/filters-cases/bug-2164b.asm.none.json b/test/filters-cases/bug-2164b.asm.none.json index 3a1d8c12a..58f52b005 100644 --- a/test/filters-cases/bug-2164b.asm.none.json +++ b/test/filters-cases/bug-2164b.asm.none.json @@ -419,15 +419,7 @@ "text": ".Linfo_string3:" }, { - "labels": [ - { - "name": "trap_arm", - "range": { - "endCol": 26, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"trap_arm\" @ string offset=124" }, @@ -437,15 +429,7 @@ "text": ".Linfo_string4:" }, { - "labels": [ - { - "name": "trap_thumb", - "range": { - "endCol": 28, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"trap_thumb\" @ string offset=133" }, diff --git a/test/filters-cases/bug-5020.asm.none.json b/test/filters-cases/bug-5020.asm.none.json index e31e3d47b..e7e4a4099 100644 --- a/test/filters-cases/bug-5020.asm.none.json +++ b/test/filters-cases/bug-5020.asm.none.json @@ -5660,15 +5660,7 @@ "text": " .uleb128 0x4d" }, { - "labels": [ - { - "name": "std", - "range": { - "endCol": 21, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"std\"" }, @@ -42953,15 +42945,7 @@ "text": ".LASF263:" }, { - "labels": [ - { - "name": "std", - "range": { - "endCol": 21, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"std::_Function_base::~_Function_base() [base object destructor]\"" }, @@ -43251,15 +43235,7 @@ "text": ".LASF260:" }, { - "labels": [ - { - "name": "std", - "range": { - "endCol": 21, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"std::__throw_bad_function_call()\"" }, @@ -43879,15 +43855,7 @@ "text": ".LASF236:" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"main\"" }, diff --git a/test/filters-cases/bug-5050.asm.none.json b/test/filters-cases/bug-5050.asm.none.json index 60f95f8d6..d3cfcf615 100644 --- a/test/filters-cases/bug-5050.asm.none.json +++ b/test/filters-cases/bug-5050.asm.none.json @@ -14816,15 +14816,7 @@ "text": ".Linfo_string126:" }, { - "labels": [ - { - "name": "_Z1fSt7variantIJPiPlPcEE", - "range": { - "endCol": 42, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"_Z1fSt7variantIJPiPlPcEE\" # string offset=4068" }, diff --git a/test/filters-cases/bug-577_clang.asm.none.json b/test/filters-cases/bug-577_clang.asm.none.json index add4202d4..0410a335c 100644 --- a/test/filters-cases/bug-577_clang.asm.none.json +++ b/test/filters-cases/bug-577_clang.asm.none.json @@ -269,15 +269,7 @@ "text": ".Linfo_string3:" }, { - "labels": [ - { - "name": "_Z6squarei", - "range": { - "endCol": 28, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"_Z6squarei\" # string offset=154" }, diff --git a/test/filters-cases/bug-577_gcc.asm.none.json b/test/filters-cases/bug-577_gcc.asm.none.json index 2e9bb0696..63581ed64 100644 --- a/test/filters-cases/bug-577_gcc.asm.none.json +++ b/test/filters-cases/bug-577_gcc.asm.none.json @@ -993,15 +993,7 @@ "text": ".LASF3:" }, { - "labels": [ - { - "name": "_Z6squarei", - "range": { - "endCol": 28, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z6squarei\"" }, diff --git a/test/filters-cases/bug-629.asm.none.json b/test/filters-cases/bug-629.asm.none.json index b52ea0ff3..872605ced 100644 --- a/test/filters-cases/bug-629.asm.none.json +++ b/test/filters-cases/bug-629.asm.none.json @@ -739,15 +739,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "y", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"y\"" }, @@ -815,15 +807,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "d", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"d\"" }, @@ -871,15 +855,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "f", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"f\"" }, @@ -955,15 +931,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "v", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"v\"" }, @@ -1039,15 +1007,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "dd", - "range": { - "endCol": 20, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"dd\"" }, @@ -1123,15 +1083,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "yuu", - "range": { - "endCol": 21, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"yuu\"" }, @@ -1179,15 +1131,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "jj", - "range": { - "endCol": 20, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"jj\"" }, @@ -1263,15 +1207,7 @@ "text": " .uleb128 0x2" }, { - "labels": [ - { - "name": "q", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"q\"" }, diff --git a/test/filters-cases/bug-660.asm.none.json b/test/filters-cases/bug-660.asm.none.json index c2ebe6444..1fae053ab 100644 --- a/test/filters-cases/bug-660.asm.none.json +++ b/test/filters-cases/bug-660.asm.none.json @@ -4290,15 +4290,7 @@ "text": "$LASF54:" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 15, - "startCol": 11 - } - } - ], + "labels": [], "source": null, "text": " .ascii \"main\\000\"" }, diff --git a/test/filters-cases/bug-7280.asm.directives.comments.json b/test/filters-cases/bug-7280.asm.directives.comments.json index a1e6a467c..a1a62a58d 100644 --- a/test/filters-cases/bug-7280.asm.directives.comments.json +++ b/test/filters-cases/bug-7280.asm.directives.comments.json @@ -6,15 +6,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-7280.asm.directives.json b/test/filters-cases/bug-7280.asm.directives.json index a1e6a467c..a1a62a58d 100644 --- a/test/filters-cases/bug-7280.asm.directives.json +++ b/test/filters-cases/bug-7280.asm.directives.json @@ -6,15 +6,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-7280.asm.directives.labels.comments.json b/test/filters-cases/bug-7280.asm.directives.labels.comments.json index a1e6a467c..a1a62a58d 100644 --- a/test/filters-cases/bug-7280.asm.directives.labels.comments.json +++ b/test/filters-cases/bug-7280.asm.directives.labels.comments.json @@ -6,15 +6,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-7280.asm.directives.labels.comments.library.dontMaskFilenames.json b/test/filters-cases/bug-7280.asm.directives.labels.comments.library.dontMaskFilenames.json index a1e6a467c..a1a62a58d 100644 --- a/test/filters-cases/bug-7280.asm.directives.labels.comments.library.dontMaskFilenames.json +++ b/test/filters-cases/bug-7280.asm.directives.labels.comments.library.dontMaskFilenames.json @@ -6,15 +6,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-7280.asm.directives.labels.comments.library.json b/test/filters-cases/bug-7280.asm.directives.labels.comments.library.json index a1e6a467c..a1a62a58d 100644 --- a/test/filters-cases/bug-7280.asm.directives.labels.comments.library.json +++ b/test/filters-cases/bug-7280.asm.directives.labels.comments.library.json @@ -6,15 +6,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-7280.asm.directives.labels.json b/test/filters-cases/bug-7280.asm.directives.labels.json index a1e6a467c..a1a62a58d 100644 --- a/test/filters-cases/bug-7280.asm.directives.labels.json +++ b/test/filters-cases/bug-7280.asm.directives.labels.json @@ -6,15 +6,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-7280.asm.directives.library.json b/test/filters-cases/bug-7280.asm.directives.library.json index a1e6a467c..a1a62a58d 100644 --- a/test/filters-cases/bug-7280.asm.directives.library.json +++ b/test/filters-cases/bug-7280.asm.directives.library.json @@ -6,15 +6,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-7280.asm.none.json b/test/filters-cases/bug-7280.asm.none.json index 694769dc6..36a8b4ea7 100644 --- a/test/filters-cases/bug-7280.asm.none.json +++ b/test/filters-cases/bug-7280.asm.none.json @@ -52,15 +52,7 @@ "text": ".LC0:" }, { - "labels": [ - { - "name": "a", - "range": { - "endCol": 19, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"a\"" }, diff --git a/test/filters-cases/bug-995.asm.none.json b/test/filters-cases/bug-995.asm.none.json index 446091617..2dc9ce250 100644 --- a/test/filters-cases/bug-995.asm.none.json +++ b/test/filters-cases/bug-995.asm.none.json @@ -304703,15 +304703,7 @@ "text": ".LASF10092:" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"main\"" }, diff --git a/test/filters-cases/cc65-square.asm.none.json b/test/filters-cases/cc65-square.asm.none.json index a7c228763..375c9be69 100644 --- a/test/filters-cases/cc65-square.asm.none.json +++ b/test/filters-cases/cc65-square.asm.none.json @@ -124,15 +124,7 @@ "text": "" }, { - "labels": [ - { - "name": "_square", - "range": { - "endCol": 55, - "startCol": 48 - } - } - ], + "labels": [], "source": null, "text": " .dbg func, \"square\", \"00\", extern, \"_square\"" }, diff --git a/test/filters-cases/clang-hellow.asm.directives.comments.json b/test/filters-cases/clang-hellow.asm.directives.comments.json index 2ef11714b..b2d6c8619 100644 --- a/test/filters-cases/clang-hellow.asm.directives.comments.json +++ b/test/filters-cases/clang-hellow.asm.directives.comments.json @@ -295,15 +295,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clang-hellow.asm.directives.json b/test/filters-cases/clang-hellow.asm.directives.json index f1a2a75a0..23d920921 100644 --- a/test/filters-cases/clang-hellow.asm.directives.json +++ b/test/filters-cases/clang-hellow.asm.directives.json @@ -300,15 +300,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.comments.json b/test/filters-cases/clang-hellow.asm.directives.labels.comments.json index abbef4d05..5cf67bc36 100644 --- a/test/filters-cases/clang-hellow.asm.directives.labels.comments.json +++ b/test/filters-cases/clang-hellow.asm.directives.labels.comments.json @@ -155,15 +155,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json index 4c199fc27..d6153db0f 100644 --- a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json +++ b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.dontMaskFilenames.json @@ -165,15 +165,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json index abbef4d05..5cf67bc36 100644 --- a/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json +++ b/test/filters-cases/clang-hellow.asm.directives.labels.comments.library.json @@ -155,15 +155,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clang-hellow.asm.directives.labels.json b/test/filters-cases/clang-hellow.asm.directives.labels.json index 20727eb53..43cbca86e 100644 --- a/test/filters-cases/clang-hellow.asm.directives.labels.json +++ b/test/filters-cases/clang-hellow.asm.directives.labels.json @@ -160,15 +160,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clang-hellow.asm.directives.library.json b/test/filters-cases/clang-hellow.asm.directives.library.json index f1a2a75a0..23d920921 100644 --- a/test/filters-cases/clang-hellow.asm.directives.library.json +++ b/test/filters-cases/clang-hellow.asm.directives.library.json @@ -300,15 +300,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clang-hellow.asm.none.json b/test/filters-cases/clang-hellow.asm.none.json index e6c643e4c..56259f0e1 100644 --- a/test/filters-cases/clang-hellow.asm.none.json +++ b/test/filters-cases/clang-hellow.asm.none.json @@ -579,15 +579,7 @@ "text": " .byte 2 # Abbrev [2] 0x8b:0x20 DW_TAG_subprogram" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .ascii \"main\" # DW_AT_name" }, @@ -1047,15 +1039,7 @@ "text": " .long 139 # DIE offset" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 23, - "startCol": 19 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"main\" # External Name" }, diff --git a/test/filters-cases/clanglib-bug2898-b.asm.none.json b/test/filters-cases/clanglib-bug2898-b.asm.none.json index e8fc90f19..c4e692893 100644 --- a/test/filters-cases/clanglib-bug2898-b.asm.none.json +++ b/test/filters-cases/clanglib-bug2898-b.asm.none.json @@ -23455,15 +23455,7 @@ "text": ".Linfo_string277:" }, { - "labels": [ - { - "name": "_Z3fooRKSt17basic_string_viewIcSt11char_traitsIcEE", - "range": { - "endCol": 68, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"_Z3fooRKSt17basic_string_viewIcSt11char_traitsIcEE\" # string offset=6257" }, diff --git a/test/filters-cases/clanglib-bug2898.asm.none.json b/test/filters-cases/clanglib-bug2898.asm.none.json index 87caa4a07..ec13ea5e1 100644 --- a/test/filters-cases/clanglib-bug2898.asm.none.json +++ b/test/filters-cases/clanglib-bug2898.asm.none.json @@ -52878,15 +52878,7 @@ "text": ".Linfo_string597:" }, { - "labels": [ - { - "name": "_Z3cvtN3eve7logicalINS_10avx_abi_v04wideIsNS_5fixedILl8EEEEEEE", - "range": { - "endCol": 80, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .asciz \"_Z3cvtN3eve7logicalINS_10avx_abi_v04wideIsNS_5fixedILl8EEEEEEE\" # string offset=10275" }, diff --git a/test/filters-cases/diab.asm.none.json b/test/filters-cases/diab.asm.none.json index 9870ab41f..526cb6c43 100644 --- a/test/filters-cases/diab.asm.none.json +++ b/test/filters-cases/diab.asm.none.json @@ -7597,15 +7597,7 @@ "text": " .4byte .L167-.L2" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 28, - "startCol": 24 - } - } - ], + "labels": [], "source": null, "text": " .byte \"main\"" }, @@ -8715,15 +8707,7 @@ "text": " .wrcm.nelem \"functions\"" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 26, - "startCol": 22 - } - } - ], + "labels": [], "source": null, "text": " .wrcm.nelem \"main\"" }, diff --git a/test/filters-cases/eigen-test.asm.none.json b/test/filters-cases/eigen-test.asm.none.json index 47558acab..8384e89ff 100644 --- a/test/filters-cases/eigen-test.asm.none.json +++ b/test/filters-cases/eigen-test.asm.none.json @@ -299434,15 +299434,7 @@ "text": ".LASF893:" }, { - "labels": [ - { - "name": "_ZNSt16allocator_traitsISaIcEE8allocateERS0_m", - "range": { - "endCol": 63, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt16allocator_traitsISaIcEE8allocateERS0_m\"" }, @@ -299462,15 +299454,7 @@ "text": ".LASF343:" }, { - "labels": [ - { - "name": "_ZNSt11char_traitsIcE4copyEPcPKcm", - "range": { - "endCol": 51, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt11char_traitsIcE4copyEPcPKcm\"" }, @@ -300060,15 +300044,7 @@ "text": ".LASF1138:" }, { - "labels": [ - { - "name": "_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag", - "range": { - "endCol": 116, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt10__distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_St26random_access_iterator_tag\"" }, @@ -300088,15 +300064,7 @@ "text": ".LASF15:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm", - "range": { - "endCol": 83, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm\"" }, @@ -300366,15 +300334,7 @@ "text": ".LASF3099:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal11noncopyableC2Ev", - "range": { - "endCol": 53, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal11noncopyableC2Ev\"" }, @@ -300884,15 +300844,7 @@ "text": ".LASF3071:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_", - "range": { - "endCol": 95, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_\"" }, @@ -301472,15 +301424,7 @@ "text": ".LASF40:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv", - "range": { - "endCol": 91, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv\"" }, @@ -301945,15 +301889,7 @@ "text": ".LASF2928:" }, { - "labels": [ - { - "name": "_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll", - "range": { - "endCol": 94, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll\"" }, @@ -302063,15 +301999,7 @@ "text": ".LASF2578:" }, { - "labels": [ - { - "name": "_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7derivedEv", - "range": { - "endCol": 88, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7derivedEv\"" }, @@ -302666,15 +302594,7 @@ "text": ".LASF154:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc", - "range": { - "endCol": 75, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc\"" }, @@ -302794,15 +302714,7 @@ "text": ".LASF1192:" }, { - "labels": [ - { - "name": "_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm", - "range": { - "endCol": 65, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN9__gnu_cxx13new_allocatorIcE10deallocateEPcm\"" }, @@ -303172,15 +303084,7 @@ "text": ".LASF1150:" }, { - "labels": [ - { - "name": "_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_", - "range": { - "endCol": 83, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt8distanceIPcENSt15iterator_traitsIT_E15difference_typeES2_S2_\"" }, @@ -303290,15 +303194,7 @@ "text": ".LASF3083:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev", - "range": { - "endCol": 75, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev\"" }, @@ -303798,15 +303694,7 @@ "text": ".LASF1270:" }, { - "labels": [ - { - "name": "_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_", - "range": { - "endCol": 58, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN9__gnu_cxx17__is_null_pointerIcEEbPT_\"" }, @@ -303896,15 +303784,7 @@ "text": ".LASF3080:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_", - "range": { - "endCol": 87, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_\"" }, @@ -303934,15 +303814,7 @@ "text": ".LASF2584:" }, { - "labels": [ - { - "name": "_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv", - "range": { - "endCol": 85, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv\"" }, @@ -304212,15 +304084,7 @@ "text": ".LASF30:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv", - "range": { - "endCol": 85, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv\"" }, @@ -304630,15 +304494,7 @@ "text": ".LASF3087:" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"main\"" }, @@ -304748,15 +304604,7 @@ "text": ".LASF1203:" }, { - "labels": [ - { - "name": "_ZN9__gnu_cxx14__alloc_traitsISaIcEcE17_S_select_on_copyERKS1_", - "range": { - "endCol": 80, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN9__gnu_cxx14__alloc_traitsISaIcEcE17_S_select_on_copyERKS1_\"" }, @@ -305146,15 +304994,7 @@ "text": ".LASF271:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_", - "range": { - "endCol": 97, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_\"" }, @@ -305744,15 +305584,7 @@ "text": ".LASF32:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm", - "range": { - "endCol": 85, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm\"" }, @@ -305862,15 +305694,7 @@ "text": ".LASF269:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPKcEEvT_S8_St12__false_type", - "range": { - "endCol": 117, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPKcEEvT_S8_St12__false_type\"" }, @@ -306130,15 +305954,7 @@ "text": ".LASF2971:" }, { - "labels": [ - { - "name": "_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE22_check_template_paramsEv", - "range": { - "endCol": 110, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE22_check_template_paramsEv\"" }, @@ -306828,15 +306644,7 @@ "text": ".LASF270:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_", - "range": { - "endCol": 96, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_\"" }, @@ -307146,15 +306954,7 @@ "text": ".LASF1163:" }, { - "labels": [ - { - "name": "_ZStorSt13_Ios_OpenmodeS_", - "range": { - "endCol": 43, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZStorSt13_Ios_OpenmodeS_\"" }, @@ -307174,15 +306974,7 @@ "text": ".LASF2244:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal12aligned_freeEPv", - "range": { - "endCol": 53, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal12aligned_freeEPv\"" }, @@ -307432,15 +307224,7 @@ "text": ".LASF3048:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal9evaluatorINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2ERKS3_", - "range": { - "endCol": 94, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal9evaluatorINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2ERKS3_\"" }, @@ -307470,15 +307254,7 @@ "text": ".LASF26:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv", - "range": { - "endCol": 87, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv\"" }, @@ -307898,15 +307674,7 @@ "text": ".LASF3050:" }, { - "labels": [ - { - "name": "_ZN5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev", - "range": { - "endCol": 83, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev\"" }, @@ -307926,15 +307694,7 @@ "text": ".LASF41:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv", - "range": { - "endCol": 92, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv\"" }, @@ -308144,15 +307904,7 @@ "text": ".LASF2250:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal19throw_std_bad_allocEv", - "range": { - "endCol": 59, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal19throw_std_bad_allocEv\"" }, @@ -308542,15 +308294,7 @@ "text": ".LASF263:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag", - "range": { - "endCol": 121, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag\"" }, @@ -308650,15 +308394,7 @@ "text": ".LASF2383:" }, { - "labels": [ - { - "name": "_ZNK5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EE11outerStrideEv", - "range": { - "endCol": 77, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EE11outerStrideEv\"" }, @@ -309028,15 +308764,7 @@ "text": ".LASF24:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm", - "range": { - "endCol": 88, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm\"" }, @@ -309246,15 +308974,7 @@ "text": ".LASF1144:" }, { - "labels": [ - { - "name": "_ZSt10__distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag", - "range": { - "endCol": 117, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt10__distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_St26random_access_iterator_tag\"" }, @@ -309704,15 +309424,7 @@ "text": ".LASF3049:" }, { - "labels": [ - { - "name": "_ZN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEC2Ev", - "range": { - "endCol": 67, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEC2Ev\"" }, @@ -310002,15 +309714,7 @@ "text": ".LASF2918:" }, { - "labels": [ - { - "name": "_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv", - "range": { - "endCol": 92, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv\"" }, @@ -310620,15 +310324,7 @@ "text": ".LASF18:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv", - "range": { - "endCol": 88, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv\"" }, @@ -310818,15 +310514,7 @@ "text": ".LASF2991:" }, { - "labels": [ - { - "name": "_ZNK5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE4rowsEv", - "range": { - "endCol": 71, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE4rowsEv\"" }, @@ -310876,15 +310564,7 @@ "text": ".LASF1148:" }, { - "labels": [ - { - "name": "_ZSt11__addressofIcEPT_RS0_", - "range": { - "endCol": 45, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt11__addressofIcEPT_RS0_\"" }, @@ -311044,15 +310724,7 @@ "text": ".LASF261:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag", - "range": { - "endCol": 120, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag\"" }, @@ -311382,15 +311054,7 @@ "text": ".LASF62:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_", - "range": { - "endCol": 95, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_\"" }, @@ -311400,15 +311064,7 @@ "text": ".LASF2236:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal28conditional_aligned_new_autoIdLb1EEEPT_m", - "range": { - "endCol": 78, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal28conditional_aligned_new_autoIdLb1EEEPT_m\"" }, @@ -311538,15 +311194,7 @@ "text": ".LASF164:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc", - "range": { - "endCol": 83, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc\"" }, @@ -311686,15 +311334,7 @@ "text": ".LASF2719:" }, { - "labels": [ - { - "name": "_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4evalEv", - "range": { - "endCol": 85, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4evalEv\"" }, @@ -311904,15 +311544,7 @@ "text": ".LASF1170:" }, { - "labels": [ - { - "name": "_ZN9__gnu_cxx11char_traitsIcE2eqERKcS3_", - "range": { - "endCol": 57, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN9__gnu_cxx11char_traitsIcE2eqERKcS3_\"" }, @@ -311932,15 +311564,7 @@ "text": ".LASF1130:" }, { - "labels": [ - { - "name": "_ZNSt14pointer_traitsIPKcE10pointer_toERS0_", - "range": { - "endCol": 61, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt14pointer_traitsIPKcE10pointer_toERS0_\"" }, @@ -312090,15 +311714,7 @@ "text": ".LASF2586:" }, { - "labels": [ - { - "name": "_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv", - "range": { - "endCol": 85, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv\"" }, @@ -312488,15 +312104,7 @@ "text": ".LASF3098:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal11noncopyableD2Ev", - "range": { - "endCol": 53, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal11noncopyableD2Ev\"" }, @@ -312536,15 +312144,7 @@ "text": ".LASF28:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm", - "range": { - "endCol": 85, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm\"" }, @@ -312714,15 +312314,7 @@ "text": ".LASF3084:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD2Ev", - "range": { - "endCol": 89, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD2Ev\"" }, @@ -312972,15 +312564,7 @@ "text": ".LASF1153:" }, { - "labels": [ - { - "name": "_ZSt8distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_", - "range": { - "endCol": 84, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt8distanceIPKcENSt15iterator_traitsIT_E15difference_typeES3_S3_\"" }, @@ -313070,15 +312654,7 @@ "text": ".LASF69:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm", - "range": { - "endCol": 88, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm\"" }, @@ -313588,15 +313164,7 @@ "text": ".LASF1122:" }, { - "labels": [ - { - "name": "_ZNSt14pointer_traitsIPcE10pointer_toERc", - "range": { - "endCol": 58, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt14pointer_traitsIPcE10pointer_toERc\"" }, @@ -313906,15 +313474,7 @@ "text": ".LASF2920:" }, { - "labels": [ - { - "name": "_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5coeffEll", - "range": { - "endCol": 94, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5coeffEll\"" }, @@ -314114,15 +313674,7 @@ "text": ".LASF2657:" }, { - "labels": [ - { - "name": "_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9innerSizeEv", - "range": { - "endCol": 90, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9innerSizeEv\"" }, @@ -314232,15 +313784,7 @@ "text": ".LASF2973:" }, { - "labels": [ - { - "name": "_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6_init2IiiEEvllPNS_8internal9enable_ifILb1ET_E4typeE", - "range": { - "endCol": 136, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6_init2IiiEEvllPNS_8internal9enable_ifILb1ET_E4typeE\"" }, @@ -314390,15 +313934,7 @@ "text": ".LASF2629:" }, { - "labels": [ - { - "name": "_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EE8coeffRefEll", - "range": { - "endCol": 100, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EE8coeffRefEll\"" }, @@ -314418,15 +313954,7 @@ "text": ".LASF931:" }, { - "labels": [ - { - "name": "_ZNSt8ios_base9precisionEl", - "range": { - "endCol": 44, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt8ios_base9precisionEl\"" }, @@ -314526,15 +314054,7 @@ "text": ".LASF1136:" }, { - "labels": [ - { - "name": "_ZSt9addressofIKcEPT_RS1_", - "range": { - "endCol": 43, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt9addressofIKcEPT_RS1_\"" }, @@ -314834,15 +314354,7 @@ "text": ".LASF131:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv", - "range": { - "endCol": 83, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv\"" }, @@ -315012,15 +314524,7 @@ "text": ".LASF124:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv", - "range": { - "endCol": 83, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv\"" }, @@ -315050,15 +314554,7 @@ "text": ".LASF2231:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal26conditional_aligned_mallocILb1EEEPvm", - "range": { - "endCol": 74, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal26conditional_aligned_mallocILb1EEEPvm\"" }, @@ -315938,15 +315434,7 @@ "text": ".LASF929:" }, { - "labels": [ - { - "name": "_ZNSt8ios_base5widthEl", - "range": { - "endCol": 40, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt8ios_base5widthEl\"" }, @@ -316106,15 +315594,7 @@ "text": ".LASF3066:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal9evaluatorINS_15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEED2Ev", - "range": { - "endCol": 113, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal9evaluatorINS_15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEED2Ev\"" }, @@ -316374,15 +315854,7 @@ "text": ".LASF3035:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal19variable_if_dynamicIlLin1EEC2El", - "range": { - "endCol": 69, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal19variable_if_dynamicIlLin1EEC2El\"" }, @@ -316692,15 +316164,7 @@ "text": ".LASF20:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv", - "range": { - "endCol": 89, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv\"" }, @@ -316780,15 +316244,7 @@ "text": ".LASF3065:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal9evaluatorINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev", - "range": { - "endCol": 90, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal9evaluatorINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev\"" }, @@ -316858,15 +316314,7 @@ "text": ".LASF2246:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal14aligned_mallocEm", - "range": { - "endCol": 54, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal14aligned_mallocEm\"" }, @@ -317466,15 +316914,7 @@ "text": ".LASF2163:" }, { - "labels": [ - { - "name": "_ZNK5Eigen8internal19variable_if_dynamicIlLin1EE5valueEv", - "range": { - "endCol": 74, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen8internal19variable_if_dynamicIlLin1EE5valueEv\"" }, @@ -317574,15 +317014,7 @@ "text": ".LASF1273:" }, { - "labels": [ - { - "name": "_ZN9__gnu_cxx17__is_null_pointerIKcEEbPT_", - "range": { - "endCol": 59, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN9__gnu_cxx17__is_null_pointerIKcEEbPT_\"" }, @@ -317772,15 +317204,7 @@ "text": ".LASF3037:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal14evaluator_baseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev", - "range": { - "endCol": 96, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal14evaluator_baseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev\"" }, @@ -317830,15 +317254,7 @@ "text": ".LASF339:" }, { - "labels": [ - { - "name": "_ZNSt11char_traitsIcE6lengthEPKc", - "range": { - "endCol": 50, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt11char_traitsIcE6lengthEPKc\"" }, @@ -318028,15 +317444,7 @@ "text": ".LASF2919:" }, { - "labels": [ - { - "name": "_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv", - "range": { - "endCol": 92, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv\"" }, @@ -318346,15 +317754,7 @@ "text": ".LASF2994:" }, { - "labels": [ - { - "name": "_ZN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE6resizeElll", - "range": { - "endCol": 74, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE6resizeElll\"" }, @@ -318394,15 +317794,7 @@ "text": ".LASF2926:" }, { - "labels": [ - { - "name": "_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4dataEv", - "range": { - "endCol": 92, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4dataEv\"" }, @@ -318722,15 +318114,7 @@ "text": ".LASF2240:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal12print_matrixINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEERSoS4_RKT_RKNS_8IOFormatE", - "range": { - "endCol": 116, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal12print_matrixINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEERSoS4_RKT_RKNS_8IOFormatE\"" }, @@ -318930,15 +318314,7 @@ "text": ".LASF2992:" }, { - "labels": [ - { - "name": "_ZNK5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE4colsEv", - "range": { - "endCol": 71, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE4colsEv\"" }, @@ -319068,15 +318444,7 @@ "text": ".LASF63:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_", - "range": { - "endCol": 95, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_\"" }, @@ -319136,15 +318504,7 @@ "text": ".LASF3106:" }, { - "labels": [ - { - "name": "_ZNSt9exceptionC2Ev", - "range": { - "endCol": 37, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt9exceptionC2Ev\"" }, @@ -319154,15 +318514,7 @@ "text": ".LASF2641:" }, { - "labels": [ - { - "name": "_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3EE11outerStrideEv", - "range": { - "endCol": 104, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3EE11outerStrideEv\"" }, @@ -319222,15 +318574,7 @@ "text": ".LASF17:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv", - "range": { - "endCol": 82, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv\"" }, @@ -319260,15 +318604,7 @@ "text": ".LASF2995:" }, { - "labels": [ - { - "name": "_ZNK5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE4dataEv", - "range": { - "endCol": 71, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EE4dataEv\"" }, @@ -319778,15 +319114,7 @@ "text": ".LASF3089:" }, { - "labels": [ - { - "name": "_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev", - "range": { - "endCol": 88, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev\"" }, @@ -319906,15 +319234,7 @@ "text": ".LASF22:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm", - "range": { - "endCol": 86, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm\"" }, @@ -320624,15 +319944,7 @@ "text": ".LASF2587:" }, { - "labels": [ - { - "name": "_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4sizeEv", - "range": { - "endCol": 85, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4sizeEv\"" }, @@ -320892,15 +320204,7 @@ "text": ".LASF1146:" }, { - "labels": [ - { - "name": "_ZSt19__iterator_categoryIPKcENSt15iterator_traitsIT_E17iterator_categoryERKS3_", - "range": { - "endCol": 97, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt19__iterator_categoryIPKcENSt15iterator_traitsIT_E17iterator_categoryERKS3_\"" }, @@ -321130,15 +320434,7 @@ "text": ".LASF1159:" }, { - "labels": [ - { - "name": "_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_", - "range": { - "endCol": 71, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt4moveIRSaIcEEONSt16remove_referenceIT_E4typeEOS3_\"" }, @@ -321248,15 +320544,7 @@ "text": ".LASF3117:" }, { - "labels": [ - { - "name": "_GLOBAL__sub_I_main", - "range": { - "endCol": 37, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_GLOBAL__sub_I_main\"" }, @@ -321326,15 +320614,7 @@ "text": ".LASF1155:" }, { - "labels": [ - { - "name": "_ZSt9addressofIcEPT_RS0_", - "range": { - "endCol": 42, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt9addressofIcEPT_RS0_\"" }, @@ -321344,15 +320624,7 @@ "text": ".LASF3076:" }, { - "labels": [ - { - "name": "_ZN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EED2Ev", - "range": { - "endCol": 67, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EED2Ev\"" }, @@ -322052,15 +321324,7 @@ "text": ".LASF266:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPcEEvT_S7_St12__false_type", - "range": { - "endCol": 116, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_construct_auxIPcEEvT_S7_St12__false_type\"" }, @@ -322080,15 +321344,7 @@ "text": ".LASF3077:" }, { - "labels": [ - { - "name": "_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_", - "range": { - "endCol": 77, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_\"" }, @@ -322268,15 +321524,7 @@ "text": ".LASF3088:" }, { - "labels": [ - { - "name": "_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EED2Ev", - "range": { - "endCol": 65, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EED2Ev\"" }, @@ -322346,15 +321594,7 @@ "text": ".LASF334:" }, { - "labels": [ - { - "name": "_ZNSt11char_traitsIcE6assignERcRKc", - "range": { - "endCol": 52, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt11char_traitsIcE6assignERcRKc\"" }, @@ -322394,15 +321634,7 @@ "text": ".LASF122:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv", - "range": { - "endCol": 81, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv\"" }, @@ -322672,15 +321904,7 @@ "text": ".LASF1173:" }, { - "labels": [ - { - "name": "_ZN9__gnu_cxx11char_traitsIcE6lengthEPKc", - "range": { - "endCol": 58, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN9__gnu_cxx11char_traitsIcE6lengthEPKc\"" }, @@ -322960,15 +322184,7 @@ "text": ".LASF2577:" }, { - "labels": [ - { - "name": "_ZN5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7derivedEv", - "range": { - "endCol": 87, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7derivedEv\"" }, @@ -323048,15 +322264,7 @@ "text": ".LASF2226:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal25significant_decimals_implIdE3runEv", - "range": { - "endCol": 72, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal25significant_decimals_implIdE3runEv\"" }, @@ -323336,15 +322544,7 @@ "text": ".LASF2213:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal9evaluatorINS_15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE8coeffRefEll", - "range": { - "endCol": 121, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal9evaluatorINS_15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE8coeffRefEll\"" }, @@ -323434,15 +322634,7 @@ "text": ".LASF900:" }, { - "labels": [ - { - "name": "_ZNSt16allocator_traitsISaIcEE37select_on_container_copy_constructionERKS0_", - "range": { - "endCol": 93, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt16allocator_traitsISaIcEE37select_on_container_copy_constructionERKS0_\"" }, @@ -324172,15 +323364,7 @@ "text": ".LASF3097:" }, { - "labels": [ - { - "name": "_ZN5Eigen8IOFormatC2EiiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_S8_S8_S8_S8_", - "range": { - "endCol": 110, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8IOFormatC2EiiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_S8_S8_S8_S8_\"" }, @@ -324350,15 +323534,7 @@ "text": ".LASF2238:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal24conditional_aligned_freeILb1EEEvPv", - "range": { - "endCol": 72, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal24conditional_aligned_freeILb1EEEvPv\"" }, @@ -324548,15 +323724,7 @@ "text": ".LASF2631:" }, { - "labels": [ - { - "name": "_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll", - "range": { - "endCol": 93, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll\"" }, @@ -324776,15 +323944,7 @@ "text": ".LASF120:" }, { - "labels": [ - { - "name": "_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv", - "range": { - "endCol": 79, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv\"" }, @@ -324904,15 +324064,7 @@ "text": ".LASF897:" }, { - "labels": [ - { - "name": "_ZNSt16allocator_traitsISaIcEE10deallocateERS0_Pcm", - "range": { - "endCol": 68, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt16allocator_traitsISaIcEE10deallocateERS0_Pcm\"" }, @@ -324992,15 +324144,7 @@ "text": ".LASF3036:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal9evaluatorINS_15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEC2ERKS5_", - "range": { - "endCol": 117, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal9evaluatorINS_15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEC2ERKS5_\"" }, @@ -325240,15 +324384,7 @@ "text": ".LASF2271:" }, { - "labels": [ - { - "name": "_ZN5Eigen16GenericNumTraitsIdE8digits10Ev", - "range": { - "endCol": 59, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen16GenericNumTraitsIdE8digits10Ev\"" }, @@ -325358,15 +324494,7 @@ "text": ".LASF3070:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_", - "range": { - "endCol": 94, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcOS3_\"" }, @@ -325556,15 +324684,7 @@ "text": ".LASF2242:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal31conditional_aligned_delete_autoIdLb1EEEvPT_m", - "range": { - "endCol": 82, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal31conditional_aligned_delete_autoIdLb1EEEvPT_m\"" }, @@ -325604,15 +324724,7 @@ "text": ".LASF1193:" }, { - "labels": [ - { - "name": "_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv", - "range": { - "endCol": 61, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNK9__gnu_cxx13new_allocatorIcE8max_sizeEv\"" }, @@ -326022,15 +325134,7 @@ "text": ".LASF3105:" }, { - "labels": [ - { - "name": "_ZNSt9bad_allocC2Ev", - "range": { - "endCol": 37, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt9bad_allocC2Ev\"" }, @@ -326200,15 +325304,7 @@ "text": ".LASF3068:" }, { - "labels": [ - { - "name": "_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev", - "range": { - "endCol": 88, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev\"" }, @@ -327168,15 +326264,7 @@ "text": ".LASF3067:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal14evaluator_baseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev", - "range": { - "endCol": 96, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal14evaluator_baseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev\"" }, @@ -327496,15 +326584,7 @@ "text": ".LASF3003:" }, { - "labels": [ - { - "name": "_ZN5EigenlsINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEERSoS3_RKNS_9DenseBaseIT_EE", - "range": { - "endCol": 96, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5EigenlsINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEERSoS3_RKNS_9DenseBaseIT_EE\"" }, @@ -327754,15 +326834,7 @@ "text": ".LASF1191:" }, { - "labels": [ - { - "name": "_ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv", - "range": { - "endCol": 63, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN9__gnu_cxx13new_allocatorIcE8allocateEmPKv\"" }, @@ -328662,15 +327734,7 @@ "text": ".LASF3074:" }, { - "labels": [ - { - "name": "_ZN5Eigen8IOFormatD2Ev", - "range": { - "endCol": 40, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8IOFormatD2Ev\"" }, @@ -328970,15 +328034,7 @@ "text": ".LASF1141:" }, { - "labels": [ - { - "name": "_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_", - "range": { - "endCol": 96, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt19__iterator_categoryIPcENSt15iterator_traitsIT_E17iterator_categoryERKS2_\"" }, @@ -329018,15 +328074,7 @@ "text": ".LASF1134:" }, { - "labels": [ - { - "name": "_ZSt11__addressofIKcEPT_RS1_", - "range": { - "endCol": 46, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt11__addressofIKcEPT_RS1_\"" }, @@ -329276,15 +328324,7 @@ "text": ".LASF3040:" }, { - "labels": [ - { - "name": "_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev", - "range": { - "endCol": 81, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEC2Ev\"" }, @@ -329344,15 +328384,7 @@ "text": ".LASF142:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm", - "range": { - "endCol": 75, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm\"" }, @@ -329442,15 +328474,7 @@ "text": ".LASF1157:" }, { - "labels": [ - { - "name": "_ZSt3maxIlERKT_S2_S2_", - "range": { - "endCol": 39, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZSt3maxIlERKT_S2_S2_\"" }, @@ -330280,15 +329304,7 @@ "text": ".LASF2249:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal28check_that_malloc_is_allowedEv", - "range": { - "endCol": 68, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal28check_that_malloc_is_allowedEv\"" }, @@ -330438,15 +329454,7 @@ "text": ".LASF13:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc", - "range": { - "endCol": 82, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc\"" }, @@ -330526,15 +329534,7 @@ "text": ".LASF2228:" }, { - "labels": [ - { - "name": "_ZN5Eigen8internal21default_digits10_implIdLb1ELb0EE3runEv", - "range": { - "endCol": 76, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZN5Eigen8internal21default_digits10_implIdLb1ELb0EE3runEv\"" }, @@ -330934,15 +329934,7 @@ "text": ".LASF3079:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_", - "range": { - "endCol": 79, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_\"" }, @@ -330992,15 +329984,7 @@ "text": ".LASF898:" }, { - "labels": [ - { - "name": "_ZNSt16allocator_traitsISaIcEE8max_sizeERKS0_", - "range": { - "endCol": 63, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt16allocator_traitsISaIcEE8max_sizeERKS0_\"" }, @@ -331490,15 +330474,7 @@ "text": ".LASF53:" }, { - "labels": [ - { - "name": "_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm", - "range": { - "endCol": 86, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm\"" }, diff --git a/test/filters-cases/gcc-arm-sum.asm.none.json b/test/filters-cases/gcc-arm-sum.asm.none.json index 0ae9bc3ae..fa4be06c2 100644 --- a/test/filters-cases/gcc-arm-sum.asm.none.json +++ b/test/filters-cases/gcc-arm-sum.asm.none.json @@ -1554,15 +1554,7 @@ "text": ".LASF5:" }, { - "labels": [ - { - "name": "_Z12testFunctionPii", - "range": { - "endCol": 37, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z12testFunctionPii\"" }, diff --git a/test/filters-cases/gcc-avr-sum.asm.none.json b/test/filters-cases/gcc-avr-sum.asm.none.json index ef8bc6f7f..7b1936dd2 100644 --- a/test/filters-cases/gcc-avr-sum.asm.none.json +++ b/test/filters-cases/gcc-avr-sum.asm.none.json @@ -213,13 +213,6 @@ }, { "labels": [ - { - "name": "_Z12testFunctionPii", - "range": { - "endCol": 37, - "startCol": 18 - } - }, { "name": "_Z12testFunctionPii", "range": { diff --git a/test/filters-cases/gcc-sum.asm.none.json b/test/filters-cases/gcc-sum.asm.none.json index c45d5f8b3..ad4049337 100644 --- a/test/filters-cases/gcc-sum.asm.none.json +++ b/test/filters-cases/gcc-sum.asm.none.json @@ -1520,15 +1520,7 @@ "text": ".LASF5:" }, { - "labels": [ - { - "name": "_Z12testFunctionPii", - "range": { - "endCol": 37, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z12testFunctionPii\"" }, diff --git a/test/filters-cases/gcc-x86-vector.asm.none.json b/test/filters-cases/gcc-x86-vector.asm.none.json index b57f0cb6a..5d4324717 100644 --- a/test/filters-cases/gcc-x86-vector.asm.none.json +++ b/test/filters-cases/gcc-x86-vector.asm.none.json @@ -22452,15 +22452,7 @@ "text": ".LASF296:" }, { - "labels": [ - { - "name": "_Z3sumRKSt6vectorIiSaIiEE", - "range": { - "endCol": 43, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"_Z3sumRKSt6vectorIiSaIiEE\"" }, diff --git a/test/filters-cases/gcc4.6-hellow.asm.none.json b/test/filters-cases/gcc4.6-hellow.asm.none.json index ced64fb8e..b9a6c6ae8 100644 --- a/test/filters-cases/gcc4.6-hellow.asm.none.json +++ b/test/filters-cases/gcc4.6-hellow.asm.none.json @@ -5154,15 +5154,7 @@ "text": ".LASF52:" }, { - "labels": [ - { - "name": "main", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"main\"" }, diff --git a/test/filters-cases/intsize.asm.none.json b/test/filters-cases/intsize.asm.none.json index 29d067927..09d0b19dc 100644 --- a/test/filters-cases/intsize.asm.none.json +++ b/test/filters-cases/intsize.asm.none.json @@ -619,15 +619,7 @@ "text": ".LASF3:" }, { - "labels": [ - { - "name": "size", - "range": { - "endCol": 22, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .string \"size\"" }, diff --git a/test/filters-cases/mips5-square.asm.none.json b/test/filters-cases/mips5-square.asm.none.json index d6b09d5b4..5f71e4450 100644 --- a/test/filters-cases/mips5-square.asm.none.json +++ b/test/filters-cases/mips5-square.asm.none.json @@ -1114,15 +1114,7 @@ "text": "$LASF3:" }, { - "labels": [ - { - "name": "_Z6squarei", - "range": { - "endCol": 28, - "startCol": 18 - } - } - ], + "labels": [], "source": null, "text": " .ascii \"_Z6squarei\\000\"" }, diff --git a/test/handlers/asm-docs-tests.ts b/test/handlers/asm-docs-tests.ts index d3831205b..8462f5d26 100644 --- a/test/handlers/asm-docs-tests.ts +++ b/test/handlers/asm-docs-tests.ts @@ -103,7 +103,14 @@ const TEST_MATRIX: Record = { 'https://www.ibm.com/docs/en/aix/7.3?topic=set-addc-add-carrying-instruction', ], ], - sass: [['FADD', 'FP32 Add', 'FP32 Add', 'https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#id14']], + sass: [ + [ + 'FADD', + 'FP32 Add', + 'FP32 Add', + 'https://docs.nvidia.com/cuda/cuda-binary-utilities/index.html#instruction-set-reference', + ], + ], wdc65c816: [ [ 'jsl', diff --git a/test/pascal-tests.ts b/test/pascal-tests.ts index ddf75ae09..d71e58f7c 100644 --- a/test/pascal-tests.ts +++ b/test/pascal-tests.ts @@ -44,7 +44,7 @@ describe('Pascal', () => { beforeAll(() => { const ce = makeCompilationEnvironment({languages}); const info = { - exe: null, + exe: 'pascal-compiler', remote: true, lang: languages.pascal.id, }; @@ -498,7 +498,7 @@ describe('Pascal', () => { beforeAll(() => { const ce = makeCompilationEnvironment({languages}); const info = { - exe: null, + exe: 'pascal.exe', remote: true, lang: languages.pascal.id, }; diff --git a/types/compilation/compilation.interfaces.ts b/types/compilation/compilation.interfaces.ts index b236c7f82..94aabfe9c 100644 --- a/types/compilation/compilation.interfaces.ts +++ b/types/compilation/compilation.interfaces.ts @@ -72,6 +72,7 @@ export type LibsAndOptions = { export type GccDumpFlags = { gimpleFe: boolean; address: boolean; + alias: boolean; slim: boolean; raw: boolean; details: boolean; diff --git a/views/templates/panes/compiler.pug b/views/templates/panes/compiler.pug index 73d90434c..a53482abd 100644 --- a/views/templates/panes/compiler.pug +++ b/views/templates/panes/compiler.pug @@ -68,6 +68,7 @@ mixin newPaneButton(classId, text, title, icon) +newPaneButton("view-gnatdebugtree", "GNAT Debug Tree", "Show GNAT debug tree", "fas fa-tree") +newPaneButton("view-gnatdebug", "GNAT Debug Expanded Code", "Show GNAT debug expanded code", "fas fa-tree") +newPaneButton("view-cfg", "Control Flow Graph", "Show assembly control flow graphs", "fas fa-exchange-alt") + +newPaneButton("view-explain", "Claude Explain", "Get AI-powered explanation of your code", "fas fa-robot") .btn-group.btn-group-sm(role="group") button.btn.btn-sm.btn-light.dropdown-toggle.add-tool(type="button" title="Add tool" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Add tooling to this editor and compiler") span.fas.fa-screwdriver diff --git a/views/templates/panes/explain.pug b/views/templates/panes/explain.pug new file mode 100644 index 000000000..b44aef925 --- /dev/null +++ b/views/templates/panes/explain.pug @@ -0,0 +1,53 @@ +#explain + .explain-container.d-flex.flex-column.h-100 + .top-bar.btn-toolbar.options-toolbar.bg-light.flex-shrink-0(role="toolbar") + .btn-group(role="group" aria-label="Explain options") + include ../../font-size + .ai-disclaimer.text-muted.badge.bg-warning.mx-2( + title="LLM-generated explanations may contain errors or inaccuracies, and can state things with more \ + confidence than they deserve. \ + Please check before acting on information derived from this view." + ) + i.fas.fa-triangle-exclamation.me-1 + | LLMs can be inaccurate + .input-group + select.explain-audience.form-select.form-select-sm(style="width: auto;" aria-label="Select audience level") + option(value="loading") Loading... + button.btn.btn-sm.btn-outline-secondary.explain-audience-info(type="button" title="Audience level" tabindex="0") + i.fas.fa-info-circle + .input-group + select.explain-type.form-select.form-select-sm(style="width: auto;" aria-label="Select explanation type") + option(value="loading") Loading... + button.btn.btn-sm.btn-outline-secondary.explain-type-info(type="button" title="Explanation focus" tabindex="0") + i.fas.fa-info-circle + .btn-group(role="group" aria-label="Status").ms-auto + .status.my-auto + i.status-icon.fas.d-none + .text-muted.badge.bg-info.d-flex.align-items-center.user-select-none(title="Claude Explain is a beta feature and is subject to change or removal at any time.") + i.fas.fa-info-circle.me-1 + | Beta + .explain-consent.explain-box.d-none.flex-shrink-0 + h4 Consent Request + p + | Claude Explain will send your #[b source code] and #[b compilation output] to + | #[a(href="https://www.anthropic.com/" target="_blank" rel="noopener noreferrer") Anthropic] + | (a third party company), and will use a large language model (LLM, a form of AI) to attempt to explain your + | code and the assembly output it produces. + p LLMs can be useful but can make mistakes and can sound confident even when they're wrong. + p + | The data sent is #[b not] collected or used by Anthropic to train their model, and remains private to Compiler Explorer, + | and is covered by our #[a(href="/#privacy" target="_blank" rel="noopener noreferrer") Privacy Policy]. + p Continue? + button.btn.btn-primary.mt-2.consent-btn Yes, explain this code + .explain-no-ai.explain-box.d-none.flex-shrink-0 + h4 AI Explanation Not Available + p This code contains a "#[b no-ai]" directive. + p + | As a courtesy to people who do not wish to have their code processed by forms of AI (including LLMs), Compiler Explorer looks for + | the string #[code no-ai] in the source (or libraries included by the source). + p If found, we will not process with AI. + .explain-content.markdown-content.content.flex-grow-1.overflow-auto + .bottom-bar.bg-light.d-none.explain-bottom-bar.flex-shrink-0.px-3.d-flex.align-items-center + button.btn.btn-sm.btn-link.explain-reload(title="Regenerate explanation") + i.fas.fa-sync-alt + span.explain-stats.ms-auto diff --git a/views/templates/panes/gccdump.pug b/views/templates/panes/gccdump.pug index 3be3d4ee5..92e33a559 100644 --- a/views/templates/panes/gccdump.pug +++ b/views/templates/panes/gccdump.pug @@ -29,6 +29,7 @@ mixin optionButton(bind, isActive, text, title) // This addresses one was marked as aria-pressed=true, but not checked. What should its default state be then? Set to false for now +optionButton("gimpleFeOption", false, "GIMPLE Frontend Syntax", "Dump syntax that the GIMPLE frontend can accept") +optionButton("addressOption", false, "Addresses", "Print the address of each tree node") + +optionButton("aliasOption", false, "Alias", "Display alias information") +optionButton("blocksOption", false, "Basic Blocks", "Show the basic block boundaries (disabled in raw dumps)") +optionButton("linenoOption", false, "Line Numbers", "Show line numbers") +optionButton("detailsOption", false, "Pass Details", "Enable more detailed dumps (not honored by every dump option)") diff --git a/views/templates/templates.pug b/views/templates/templates.pug index ab9a6c67f..a41b7c788 100644 --- a/views/templates/templates.pug +++ b/views/templates/templates.pug @@ -37,6 +37,8 @@ mixin monacopane(id) include panes/conformance include panes/tree + + include panes/explain include widgets/compiler-selector diff --git a/webpack.config.esm.ts b/webpack.config.esm.ts index 5fd51f8e8..e6faec4e9 100644 --- a/webpack.config.esm.ts +++ b/webpack.config.esm.ts @@ -54,7 +54,7 @@ const hasGit = fs.existsSync(path.resolve(__dirname, '.git')); // Hack alert: due to a variety of issues, sometimes we need to change // the name here. Mostly it's things like webpack changes that affect // how minification is done, even though that's supposed not to matter. -const webpackJsHack = '.v60.'; +const webpackJsHack = '.v61.'; const plugins: Webpack.WebpackPluginInstance[] = [ new MonacoEditorWebpackPlugin({ languages: [ @@ -174,7 +174,17 @@ export default { }, }, 'css-loader', - 'sass-loader', + { + loader: 'sass-loader', + options: { + sassOptions: { + fatalDeprecations: ['import'], + }, + }, + }, + { + loader: path.resolve(__dirname, 'etc/webpack/replace-golden-layout-imports.js'), + }, ], }, { @@ -184,7 +194,7 @@ export default { }, { test: /\.pug$/, - loader: './etc/scripts/parsed-pug/parsed_pug_file.js', + loader: path.resolve(__dirname, 'etc/webpack/parsed-pug-loader.js'), options: { useGit: hasGit, },