Repository: compiler-explorer/compiler-explorer
Pull request #7275 (2025-01-16 03:44:49)

Added CCCL 2.7.0


Patch:
diff --git a/etc/config/android-java.amazon.properties b/etc/config/android-java.amazon.properties
index a29ead7d5..ccd796c05 100644
--- a/etc/config/android-java.amazon.properties
+++ b/etc/config/android-java.amazon.properties
@@ -1,6 +1,6 @@
 compilers=&android-d8:&android-r8:&dex2oat:&android-openjdk
 
-group.android-d8.compilers=java-d8-8156:java-d8-8172:java-d8-8233:java-d8-8242:java-d8-8247:java-d8-8336:java-d8-8337:java-d8-8510:java-d8-8527:java-d8-8535
+group.android-d8.compilers=java-d8-8156:java-d8-8172:java-d8-8233:java-d8-8242:java-d8-8247:java-d8-8336:java-d8-8337:java-d8-8510:java-d8-8527:java-d8-8535:java-d8-8617:java-d8-8627:java-d8-8714:java-d8-8718
 group.android-d8.compilerType=android-d8
 group.android-d8.isSemVer=true
 group.android-d8.objdumper=/opt/compiler-explorer/baksmali-3.0.3/baksmali-3.0.3-fat.jar
@@ -8,6 +8,18 @@ group.android-d8.javaId=java1601
 group.android-d8.kotlinId=kotlinc1920
 group.android-d8.instructionSet=dex
 
+compiler.java-d8-8718.name=d8 8.7.18
+compiler.java-d8-8718.exe=/opt/compiler-explorer/r8-8.7.18/r8-8.7.18.jar
+
+compiler.java-d8-8714.name=d8 8.7.14
+compiler.java-d8-8714.exe=/opt/compiler-explorer/r8-8.7.14/r8-8.7.14.jar
+
+compiler.java-d8-8627.name=d8 8.6.27
+compiler.java-d8-8627.exe=/opt/compiler-explorer/r8-8.6.27/r8-8.6.27.jar
+
+compiler.java-d8-8617.name=d8 8.6.17
+compiler.java-d8-8617.exe=/opt/compiler-explorer/r8-8.6.17/r8-8.6.17.jar
+
 compiler.java-d8-8535.name=d8 8.5.35
 compiler.java-d8-8535.exe=/opt/compiler-explorer/r8-8.5.35/r8-8.5.35.jar
 
@@ -38,13 +50,25 @@ compiler.java-d8-8172.exe=/opt/compiler-explorer/r8-8.1.72/r8-8.1.72.jar
 compiler.java-d8-8156.name=d8 8.1.56
 compiler.java-d8-8156.exe=/opt/compiler-explorer/r8-8.1.56/r8-8.1.56.jar
 
-group.android-r8.compilers=java-r8-8233:java-r8-8242:java-r8-8247:java-r8-8336:java-r8-8337:java-r8-8510:java-r8-8527:java-r8-8535
+group.android-r8.compilers=java-r8-8233:java-r8-8242:java-r8-8247:java-r8-8336:java-r8-8337:java-r8-8510:java-r8-8527:java-r8-8535:java-r8-8617:java-r8-8627:java-r8-8714:java-r8-8718
 group.android-r8.compilerType=android-r8
 group.android-r8.isSemVer=true
 group.android-r8.objdumper=/opt/compiler-explorer/baksmali-3.0.3/baksmali-3.0.3-fat.jar
 group.android-r8.javaId=java1601
 group.android-r8.kotlinId=kotlinc1920
 
+compiler.java-r8-8718.name=r8 8.7.18
+compiler.java-r8-8718.exe=/opt/compiler-explorer/r8-8.7.18/r8-8.7.18.jar
+
+compiler.java-r8-8714.name=r8 8.7.14
+compiler.java-r8-8714.exe=/opt/compiler-explorer/r8-8.7.14/r8-8.7.14.jar
+
+compiler.java-r8-8627.name=r8 8.6.27
+compiler.java-r8-8627.exe=/opt/compiler-explorer/r8-8.6.27/r8-8.6.27.jar
+
+compiler.java-r8-8617.name=r8 8.6.17
+compiler.java-r8-8617.exe=/opt/compiler-explorer/r8-8.6.17/r8-8.6.17.jar
+
 compiler.java-r8-8535.name=r8 8.5.35
 compiler.java-r8-8535.exe=/opt/compiler-explorer/r8-8.5.35/r8-8.5.35.jar
 
@@ -69,7 +93,7 @@ compiler.java-r8-8242.exe=/opt/compiler-explorer/r8-8.2.42/r8-8.2.42.jar
 compiler.java-r8-8233.name=r8 8.2.33
 compiler.java-r8-8233.exe=/opt/compiler-explorer/r8-8.2.33/r8-8.2.33.jar
 
-group.dex2oat.compilers=java-dex2oat-latest:java-dex2oat-3310:java-dex2oat-3411:java-dex2oat-3413:java-dex2oat-3414:java-dex2oat-3415:java-dex2oat-3416:java-dex2oat-3417:java-dex2oat-3418
+group.dex2oat.compilers=java-dex2oat-latest:java-dex2oat-3310:java-dex2oat-3411:java-dex2oat-3413:java-dex2oat-3414:java-dex2oat-3415:java-dex2oat-3416:java-dex2oat-3417:java-dex2oat-3418:java-dex2oat-3508:java-dex2oat-3509:java-dex2oat-3510:java-dex2oat-3511
 group.dex2oat.groupName=ART
 group.dex2oat.compilerType=dex2oat
 group.dex2oat.isSemVer=true
@@ -79,10 +103,38 @@ compiler.java-dex2oat-latest.name=ART dex2oat latest
 compiler.java-dex2oat-latest.artArtifactDir=/opt/compiler-explorer/dex2oat-latest
 compiler.java-dex2oat-latest.exe=/opt/compiler-explorer/dex2oat-latest/x86_64/bin/dex2oat64
 compiler.java-dex2oat-latest.objdumper=/opt/compiler-explorer/dex2oat-latest/x86_64/bin/oatdump
-compiler.java-dex2oat-latest.d8Id=java-d8-8535
+compiler.java-dex2oat-latest.d8Id=java-d8-8718
 compiler.java-dex2oat-latest.isNightly=true
 compiler.java-dex2oat-latest.profmanPath=/opt/compiler-explorer/dex2oat-latest/x86_64/bin/profman
 
+compiler.java-dex2oat-3511.name=ART dex2oat aml_art_351110180 (Nov 2024)
+compiler.java-dex2oat-3511.artArtifactDir=/opt/compiler-explorer/dex2oat-35.11
+compiler.java-dex2oat-3511.exe=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/dex2oat64
+compiler.java-dex2oat-3511.objdumper=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/oatdump
+compiler.java-dex2oat-3511.d8Id=java-d8-8718
+compiler.java-dex2oat-3511.profmanPath=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/profman
+
+compiler.java-dex2oat-3510.name=ART dex2oat aml_art_351011240 (Oct 2024)
+compiler.java-dex2oat-3510.artArtifactDir=/opt/compiler-explorer/dex2oat-35.10
+compiler.java-dex2oat-3510.exe=/opt/compiler-explorer/dex2oat-35.10/x86_64/bin/dex2oat64
+compiler.java-dex2oat-3510.objdumper=/opt/compiler-explorer/dex2oat-35.10/x86_64/bin/oatdump
+compiler.java-dex2oat-3510.d8Id=java-d8-8718
+compiler.java-dex2oat-3510.profmanPath=/opt/compiler-explorer/dex2oat-35.10/x86_64/bin/profman
+
+compiler.java-dex2oat-3509.name=ART dex2oat aml_art_350913340 (Sep 2024)
+compiler.java-dex2oat-3509.artArtifactDir=/opt/compiler-explorer/dex2oat-35.9
+compiler.java-dex2oat-3509.exe=/opt/compiler-explorer/dex2oat-35.9/x86_64/bin/dex2oat64
+compiler.java-dex2oat-3509.objdumper=/opt/compiler-explorer/dex2oat-35.9/x86_64/bin/oatdump
+compiler.java-dex2oat-3509.d8Id=java-d8-8718
+compiler.java-dex2oat-3509.profmanPath=/opt/compiler-explorer/dex2oat-35.9/x86_64/bin/profman
+
+compiler.java-dex2oat-3508.name=ART dex2oat aml_art_350820960 (Aug 2024)
+compiler.java-dex2oat-3508.artArtifactDir=/opt/compiler-explorer/dex2oat-35.8
+compiler.java-dex2oat-3508.exe=/opt/compiler-explorer/dex2oat-35.8/x86_64/bin/dex2oat64
+compiler.java-dex2oat-3508.objdumper=/opt/compiler-explorer/dex2oat-35.8/x86_64/bin/oatdump
+compiler.java-dex2oat-3508.d8Id=java-d8-8718
+compiler.java-dex2oat-3508.profmanPath=/opt/compiler-explorer/dex2oat-35.8/x86_64/bin/profman
+
 compiler.java-dex2oat-3418.name=ART dex2oat aml_art_341810020 (Jun 2024)
 compiler.java-dex2oat-3418.artArtifactDir=/opt/compiler-explorer/dex2oat-34.18
 compiler.java-dex2oat-3418.exe=/opt/compiler-explorer/dex2oat-34.18/x86_64/bin/dex2oat64
@@ -248,9 +300,21 @@ libs.android-api-stubs.versions.11662386.version=11662386
 libs.android-api-stubs.versions.11662386.path=/opt/compiler-explorer/android-api-stubs-11662386/android.jar
 
 libs.r8-keepanno.name=R8 keep-annotations
-libs.r8-keepanno.versions=8233:8242:8247:8336:8337:8510:8527:8535
+libs.r8-keepanno.versions=8233:8242:8247:8336:8337:8510:8527:8535:8617:8627:8714:8718
 libs.r8-keepanno.url=https://r8.googlesource.com/r8/+/refs/heads/main/doc/keepanno-guide.md
 
+libs.r8-keepanno.versions.8718.version=8.7.18
+libs.r8-keepanno.versions.8718.path=/opt/compiler-explorer/r8-8.7.18-keepanno/keepanno-annotations.jar
+
+libs.r8-keepanno.versions.8714.version=8.7.14
+libs.r8-keepanno.versions.8714.path=/opt/compiler-explorer/r8-8.7.14-keepanno/keepanno-annotations.jar
+
+libs.r8-keepanno.versions.8627.version=8.6.27
+libs.r8-keepanno.versions.8627.path=/opt/compiler-explorer/r8-8.6.27-keepanno/keepanno-annotations.jar
+
+libs.r8-keepanno.versions.8617.version=8.6.17
+libs.r8-keepanno.versions.8617.path=/opt/compiler-explorer/r8-8.6.17-keepanno/keepanno-annotations.jar
+
 libs.r8-keepanno.versions.8535.version=8.5.35
 libs.r8-keepanno.versions.8535.path=/opt/compiler-explorer/r8-8.5.35-keepanno/keepanno-annotations.jar
 
@@ -304,4 +368,4 @@ libs.androidx-annotation.versions.191.version=1.9.1
 libs.androidx-annotation.versions.191.path=/opt/compiler-explorer/androidx-annotation-1.9.1/annotation-jvm.jar
 
 
-defaultLibs=android-api-stubs.11662386:r8-keepanno.8535:androidx-annotation.versions.191
+defaultLibs=android-api-stubs.11662386:r8-keepanno.8718:androidx-annotation.versions.191
diff --git a/etc/config/android-kotlin.amazon.properties b/etc/config/android-kotlin.amazon.properties
index 30abc8280..9eb16311a 100644
--- a/etc/config/android-kotlin.amazon.properties
+++ b/etc/config/android-kotlin.amazon.properties
@@ -1,6 +1,6 @@
 compilers=&android-d8:&android-r8:&dex2oat:&android-kotlinc
 
-group.android-d8.compilers=kotlin-d8-8156:kotlin-d8-8172:kotlin-d8-8233:kotlin-d8-8242:kotlin-d8-8247:kotlin-d8-8336:kotlin-d8-8337:kotlin-d8-8510:kotlin-d8-8527:kotlin-d8-8535
+group.android-d8.compilers=kotlin-d8-8156:kotlin-d8-8172:kotlin-d8-8233:kotlin-d8-8242:kotlin-d8-8247:kotlin-d8-8336:kotlin-d8-8337:kotlin-d8-8510:kotlin-d8-8527:kotlin-d8-8535:kotlin-d8-8617:kotlin-d8-8627:kotlin-d8-8714:kotlin-d8-8718
 group.android-d8.compilerType=android-d8
 group.android-d8.isSemVer=true
 group.android-d8.objdumper=/opt/compiler-explorer/baksmali-3.0.3/baksmali-3.0.3-fat.jar
@@ -8,6 +8,18 @@ group.android-d8.javaId=java1601
 group.android-d8.kotlinId=kotlinc1920
 group.android-d8.instructionSet=dex
 
+compiler.kotlin-d8-8718.name=d8 8.7.18
+compiler.kotlin-d8-8718.exe=/opt/compiler-explorer/r8-8.7.18/r8-8.7.18.jar
+
+compiler.kotlin-d8-8714.name=d8 8.7.14
+compiler.kotlin-d8-8714.exe=/opt/compiler-explorer/r8-8.7.14/r8-8.7.14.jar
+
+compiler.kotlin-d8-8627.name=d8 8.6.27
+compiler.kotlin-d8-8627.exe=/opt/compiler-explorer/r8-8.6.27/r8-8.6.27.jar
+
+compiler.kotlin-d8-8617.name=d8 8.6.17
+compiler.kotlin-d8-8617.exe=/opt/compiler-explorer/r8-8.6.17/r8-8.6.17.jar
+
 compiler.kotlin-d8-8535.name=d8 8.5.35
 compiler.kotlin-d8-8535.exe=/opt/compiler-explorer/r8-8.5.35/r8-8.5.35.jar
 
@@ -38,7 +50,7 @@ compiler.kotlin-d8-8172.exe=/opt/compiler-explorer/r8-8.1.72/r8-8.1.72.jar
 compiler.kotlin-d8-8156.name=d8 8.1.56
 compiler.kotlin-d8-8156.exe=/opt/compiler-explorer/r8-8.1.56/r8-8.1.56.jar
 
-group.android-r8.compilers=kotlin-r8-8233:kotlin-r8-8242:kotlin-r8-8247:kotlin-r8-8336:kotlin-r8-8337:kotlin-r8-8510:kotlin-r8-8527:kotlin-r8-8535
+group.android-r8.compilers=kotlin-r8-8233:kotlin-r8-8242:kotlin-r8-8247:kotlin-r8-8336:kotlin-r8-8337:kotlin-r8-8510:kotlin-r8-8527:kotlin-r8-8535:kotlin-r8-8617:kotlin-r8-8627:kotlin-r8-8714:kotlin-r8-8718
 group.android-r8.compilerType=android-r8
 group.android-r8.isSemVer=true
 group.android-r8.objdumper=/opt/compiler-explorer/baksmali-3.0.3/baksmali-3.0.3-fat.jar
@@ -46,6 +58,18 @@ group.android-r8.javaId=java1601
 group.android-r8.kotlinId=kotlinc1920
 group.android-r8.kotlinLibPath=/opt/compiler-explorer/kotlin-jvm-1.9.20/lib
 
+compiler.kotlin-r8-8718.name=r8 8.7.18
+compiler.kotlin-r8-8718.exe=/opt/compiler-explorer/r8-8.7.18/r8-8.7.18.jar
+
+compiler.kotlin-r8-8714.name=r8 8.7.14
+compiler.kotlin-r8-8714.exe=/opt/compiler-explorer/r8-8.7.14/r8-8.7.14.jar
+
+compiler.kotlin-r8-8627.name=r8 8.6.27
+compiler.kotlin-r8-8627.exe=/opt/compiler-explorer/r8-8.6.27/r8-8.6.27.jar
+
+compiler.kotlin-r8-8617.name=r8 8.6.17
+compiler.kotlin-r8-8617.exe=/opt/compiler-explorer/r8-8.6.17/r8-8.6.17.jar
+
 compiler.kotlin-r8-8535.name=r8 8.5.35
 compiler.kotlin-r8-8535.exe=/opt/compiler-explorer/r8-8.5.35/r8-8.5.35.jar
 
@@ -70,7 +94,7 @@ compiler.kotlin-r8-8242.exe=/opt/compiler-explorer/r8-8.2.42/r8-8.2.42.jar
 compiler.kotlin-r8-8233.name=r8 8.2.33
 compiler.kotlin-r8-8233.exe=/opt/compiler-explorer/r8-8.2.33/r8-8.2.33.jar
 
-group.dex2oat.compilers=kotlin-dex2oat-latest:kotlin-dex2oat-3310:kotlin-dex2oat-3411:kotlin-dex2oat-3413:kotlin-dex2oat-3414:kotlin-dex2oat-3415:kotlin-dex2oat-3416:kotlin-dex2oat-3417:kotlin-dex2oat-3418
+group.dex2oat.compilers=kotlin-dex2oat-latest:kotlin-dex2oat-3310:kotlin-dex2oat-3411:kotlin-dex2oat-3413:kotlin-dex2oat-3414:kotlin-dex2oat-3415:kotlin-dex2oat-3416:kotlin-dex2oat-3417:kotlin-dex2oat-3418:kotlin-dex2oat-3508:kotlin-dex2oat-3509:kotlin-dex2oat-3510:kotlin-dex2oat-3511
 group.dex2oat.groupName=ART
 group.dex2oat.compilerType=dex2oat
 group.dex2oat.isSemVer=true
@@ -84,6 +108,34 @@ compiler.kotlin-dex2oat-latest.d8Id=kotlin-d8-8535
 compiler.kotlin-dex2oat-latest.isNightly=true
 compiler.kotlin-dex2oat-latest.profmanPath=/opt/compiler-explorer/dex2oat-latest/x86_64/bin/profman
 
+compiler.kotlin-dex2oat-3511.name=ART dex2oat aml_art_351110180 (Nov 2024)
+compiler.kotlin-dex2oat-3511.artArtifactDir=/opt/compiler-explorer/dex2oat-35.11
+compiler.kotlin-dex2oat-3511.exe=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/dex2oat64
+compiler.kotlin-dex2oat-3511.objdumper=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/oatdump
+compiler.kotlin-dex2oat-3511.d8Id=kotlin-d8-8718
+compiler.kotlin-dex2oat-3511.profmanPath=/opt/compiler-explorer/dex2oat-35.11/x86_64/bin/profman
+
+compiler.kotlin-dex2oat-3510.name=ART dex2oat aml_art_351011240 (Oct 2024)
+compiler.kotlin-dex2oat-3510.artArtifactDir=/opt/compiler-explorer/dex2oat-35.10
+compiler.kotlin-dex2oat-3510.exe=/opt/compiler-explorer/dex2oat-35.10/x86_64/bin/dex2oat64
+compiler.kotlin-dex2oat-3510.objdumper=/opt/compiler-explorer/dex2oat-35.10/x86_64/bin/oatdump
+compiler.kotlin-dex2oat-3510.d8Id=kotlin-d8-8718
+compiler.kotlin-dex2oat-3510.profmanPath=/opt/compiler-explorer/dex2oat-35.10/x86_64/bin/profman
+
+compiler.kotlin-dex2oat-3509.name=ART dex2oat aml_art_350913340 (Sep 2024)
+compiler.kotlin-dex2oat-3509.artArtifactDir=/opt/compiler-explorer/dex2oat-35.9
+compiler.kotlin-dex2oat-3509.exe=/opt/compiler-explorer/dex2oat-35.9/x86_64/bin/dex2oat64
+compiler.kotlin-dex2oat-3509.objdumper=/opt/compiler-explorer/dex2oat-35.9/x86_64/bin/oatdump
+compiler.kotlin-dex2oat-3509.d8Id=kotlin-d8-8718
+compiler.kotlin-dex2oat-3509.profmanPath=/opt/compiler-explorer/dex2oat-35.9/x86_64/bin/profman
+
+compiler.kotlin-dex2oat-3508.name=ART dex2oat aml_art_350820960 (Aug 2024)
+compiler.kotlin-dex2oat-3508.artArtifactDir=/opt/compiler-explorer/dex2oat-35.8
+compiler.kotlin-dex2oat-3508.exe=/opt/compiler-explorer/dex2oat-35.8/x86_64/bin/dex2oat64
+compiler.kotlin-dex2oat-3508.objdumper=/opt/compiler-explorer/dex2oat-35.8/x86_64/bin/oatdump
+compiler.kotlin-dex2oat-3508.d8Id=kotlin-d8-8718
+compiler.kotlin-dex2oat-3508.profmanPath=/opt/compiler-explorer/dex2oat-35.8/x86_64/bin/profman
+
 compiler.kotlin-dex2oat-3418.name=ART dex2oat aml_art_341810020 (Jun 2024)
 compiler.kotlin-dex2oat-3418.artArtifactDir=/opt/compiler-explorer/dex2oat-34.18
 compiler.kotlin-dex2oat-3418.exe=/opt/compiler-explorer/dex2oat-34.18/x86_64/bin/dex2oat64
@@ -306,9 +358,21 @@ libs.android-api-stubs.versions.11662386.version=11662386
 libs.android-api-stubs.versions.11662386.path=/opt/compiler-explorer/android-api-stubs-11662386/android.jar
 
 libs.r8-keepanno.name=R8 keep-annotations
-libs.r8-keepanno.versions=8233:8242:8247:8336:8337:8510:8527:8535
+libs.r8-keepanno.versions=8233:8242:8247:8336:8337:8510:8527:8535:8617:8627:8714:8718
 libs.r8-keepanno.url=https://r8.googlesource.com/r8/+/refs/heads/main/doc/keepanno-guide.md
 
+libs.r8-keepanno.versions.8718.version=8.7.18
+libs.r8-keepanno.versions.8718.path=/opt/compiler-explorer/r8-8.7.18-keepanno/keepanno-annotations.jar
+
+libs.r8-keepanno.versions.8714.version=8.7.14
+libs.r8-keepanno.versions.8714.path=/opt/compiler-explorer/r8-8.7.14-keepanno/keepanno-annotations.jar
+
+libs.r8-keepanno.versions.8627.version=8.6.27
+libs.r8-keepanno.versions.8627.path=/opt/compiler-explorer/r8-8.6.27-keepanno/keepanno-annotations.jar
+
+libs.r8-keepanno.versions.8617.version=8.6.17
+libs.r8-keepanno.versions.8617.path=/opt/compiler-explorer/r8-8.6.17-keepanno/keepanno-annotations.jar
+
 libs.r8-keepanno.versions.8535.version=8.5.35
 libs.r8-keepanno.versions.8535.path=/opt/compiler-explorer/r8-8.5.35-keepanno/keepanno-annotations.jar
 
@@ -362,4 +426,4 @@ libs.androidx-annotation.versions.191.version=1.9.1
 libs.androidx-annotation.versions.191.path=/opt/compiler-explorer/androidx-annotation-1.9.1/annotation-jvm.jar
 
 
-defaultLibs=android-api-stubs.11662386:r8-keepanno.8535:androidx-annotation.versions.191
+defaultLibs=android-api-stubs.11662386:r8-keepanno.8718:androidx-annotation.versions.191
diff --git a/etc/config/c++.amazon.properties b/etc/config/c++.amazon.properties
index a075a6a65..a21319cd7 100644
--- a/etc/config/c++.amazon.properties
+++ b/etc/config/c++.amazon.properties
@@ -3430,7 +3430,7 @@ compiler.rv32-gcctrunk.demangler=/opt/compiler-explorer/riscv32/gcc-trunk/riscv3
 
 ################################
 # GCC for Xtensa ESP32
-group.xtensaesp32.compilers=esp32g2019r2:esp32g2020r1:esp32g2020r2:esp32g2020r3:esp32g2021r1:esp32g2021r2:esp32g2022r1:esp32g20230208
+group.xtensaesp32.compilers=esp32g2019r2:esp32g2020r1:esp32g2020r2:esp32g2020r3:esp32g2021r1:esp32g2021r2:esp32g2022r1:esp32g20230208:esp32g20241119
 group.xtensaesp32.groupName=Xtensa ESP32 GCC
 group.xtensaesp32.supportsBinary=false
 group.xtensaesp32.instructionSet=xtensa
@@ -3452,10 +3452,12 @@ compiler.esp32g2022r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-gcc11_2
 compiler.esp32g2022r1.name=Xtensa ESP32 gcc 11.2.0 (2022r1)
 compiler.esp32g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-12.2.0_20230208/bin/xtensa-esp32-elf-g++
 compiler.esp32g20230208.name=Xtensa ESP32 gcc 12.2.0 (20230208)
+compiler.esp32g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32-elf-g++
+compiler.esp32g20241119.name=Xtensa ESP32 gcc 14.2.0 (20241119)
 
 ################################
 # GCC for Xtensa ESP32-S2
-group.xtensaesp32s2.compilers=esp32s2g2019r2:esp32s2g2020r1:esp32s2g2020r2:esp32s2g2020r3:esp32s2g2021r1:esp32s2g2021r2:esp32s2g2022r1:esp32s2g20230208
+group.xtensaesp32s2.compilers=esp32s2g2019r2:esp32s2g2020r1:esp32s2g2020r2:esp32s2g2020r3:esp32s2g2021r1:esp32s2g2021r2:esp32s2g2022r1:esp32s2g20230208:esp32s2g20241119
 group.xtensaesp32s2.groupName=Xtensa ESP32-S2 GCC
 group.xtensaesp32s2.supportsBinary=false
 group.xtensaesp32s2.instructionSet=xtensa
@@ -3477,10 +3479,12 @@ compiler.esp32s2g2022r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-gcc
 compiler.esp32s2g2022r1.name=Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
 compiler.esp32s2g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-12.2.0_20230208/bin/xtensa-esp32s2-elf-g++
 compiler.esp32s2g20230208.name=Xtensa ESP32-S2 gcc 12.2.0 (20230208)
+compiler.esp32s2g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s2-elf-g++
+compiler.esp32s2g20241119.name=Xtensa ESP32-S2 gcc 14.2.0 (20241119)
 
 ################################
 # GCC for Xtensa ESP32-S3
-group.xtensaesp32s3.compilers=esp32s3g2020r3:esp32s3g2021r1:esp32s3g2021r2:esp32s3g2022r1:esp32s3g20230208
+group.xtensaesp32s3.compilers=esp32s3g2020r3:esp32s3g2021r1:esp32s3g2021r2:esp32s3g2022r1:esp32s3g20230208:esp32s3g20241119
 group.xtensaesp32s3.groupName=Xtensa ESP32-S3 GCC
 group.xtensaesp32s3.supportsBinary=false
 group.xtensaesp32s3.instructionSet=xtensa
@@ -3496,6 +3500,8 @@ compiler.esp32s3g2022r1.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-gcc
 compiler.esp32s3g2022r1.name=Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
 compiler.esp32s3g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-12.2.0_20230208/bin/xtensa-esp32s3-elf-g++
 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
@@ -4991,7 +4997,7 @@ libs.mfem.versions.47.packagedheaders=true
 
 libs.mimicpp.name=mimic++
 libs.mimicpp.description=A modern and (mostly) macro free mocking framework.
-libs.mimicpp.versions=trunk:1:2:3
+libs.mimicpp.versions=trunk:1:2:3:4:5:6
 libs.mimicpp.url=https://github.com/DNKpp/mimicpp
 libs.mimicpp.versions.trunk.version=trunk
 libs.mimicpp.versions.trunk.path=/opt/compiler-explorer/libs/mimicpp/trunk/include
@@ -5001,6 +5007,12 @@ libs.mimicpp.versions.2.version=v2
 libs.mimicpp.versions.2.path=/opt/compiler-explorer/libs/mimicpp/v2/include
 libs.mimicpp.versions.3.version=v3
 libs.mimicpp.versions.3.path=/opt/compiler-explorer/libs/mimicpp/v3/include
+libs.mimicpp.versions.4.version=v4
+libs.mimicpp.versions.4.path=/opt/compiler-explorer/libs/mimicpp/v4/include
+libs.mimicpp.versions.5.version=v5
+libs.mimicpp.versions.5.path=/opt/compiler-explorer/libs/mimicpp/v5/include
+libs.mimicpp.versions.6.version=v6
+libs.mimicpp.versions.6.path=/opt/compiler-explorer/libs/mimicpp/v6/include
 
 libs.mlir.name=MLIR
 libs.mlir.description=MLIR
diff --git a/etc/config/c.amazon.properties b/etc/config/c.amazon.properties
index c1bf4e1f2..596b75220 100644
--- a/etc/config/c.amazon.properties
+++ b/etc/config/c.amazon.properties
@@ -3058,7 +3058,7 @@ compiler.rv32-cgcctrunk.demangler=/opt/compiler-explorer/riscv32/gcc-trunk/riscv
 
 ################################
 # GCC for Xtensa ESP32
-group.cxtensaesp32.compilers=cesp32g2019r2:cesp32g2020r1:cesp32g2020r2:cesp32g2020r3:cesp32g2021r1:cesp32g2021r2:cesp32g2022r1:cesp32g20230208
+group.cxtensaesp32.compilers=cesp32g2019r2:cesp32g2020r1:cesp32g2020r2:cesp32g2020r3:cesp32g2021r1:cesp32g2021r2:cesp32g2022r1:cesp32g20230208:cesp32g20241119
 group.cxtensaesp32.groupName=Xtensa ESP32 GCC
 group.cxtensaesp32.supportsBinary=false
 group.cxtensaesp32.instructionSet=xtensa
@@ -3089,10 +3089,13 @@ compiler.cesp32g2022r1.name=Xtensa ESP32 gcc 11.2.0 (2022r1)
 compiler.cesp32g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-12.2.0_20230208/bin/xtensa-esp32-elf-gcc
 compiler.cesp32g20230208.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-12.2.0_20230208/bin/xtensa-esp32-elf-objdump
 compiler.cesp32g20230208.name=Xtensa ESP32 gcc 12.2.0 (20230208)
+compiler.cesp32g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32-elf-gcc
+compiler.cesp32g20241119.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32-elf-objdump
+compiler.cesp32g20241119.name=Xtensa ESP32 gcc 14.2.0 (20241119)
 
 ################################
 # GCC for Xtensa ESP32-S2
-group.cxtensaesp32s2.compilers=cesp32s2g2019r2:cesp32s2g2020r1:cesp32s2g2020r2:cesp32s2g2020r3:cesp32s2g2021r1:cesp32s2g2021r2:cesp32s2g2022r1:cesp32s2g20230208
+group.cxtensaesp32s2.compilers=cesp32s2g2019r2:cesp32s2g2020r1:cesp32s2g2020r2:cesp32s2g2020r3:cesp32s2g2021r1:cesp32s2g2021r2:cesp32s2g2022r1:cesp32s2g20230208:cesp32s2g20241119
 group.cxtensaesp32s2.groupName=Xtensa ESP32-S2 GCC
 group.cxtensaesp32s2.supportsBinary=false
 group.cxtensaesp32s2.instructionSet=xtensa
@@ -3123,10 +3126,13 @@ compiler.cesp32s2g2022r1.name=Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
 compiler.cesp32s2g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-12.2.0_20230208/bin/xtensa-esp32s2-elf-gcc
 compiler.cesp32s2g20230208.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-12.2.0_20230208/bin/xtensa-esp32s2-elf-objdump
 compiler.cesp32s2g20230208.name=Xtensa ESP32-S2 gcc 12.2.0 (20230208)
+compiler.cesp32s2g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s2-elf-gcc
+compiler.cesp32s2g20241119.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s2-elf-objdump
+compiler.cesp32s2g20241119.name=Xtensa ESP32-S2 gcc 14.2.0 (20241119)
 
 ################################
 # GCC for Xtensa ESP32-S3
-group.cxtensaesp32s3.compilers=cesp32s3g2020r3:cesp32s3g2021r1:cesp32s3g2021r2:cesp32s3g2022r1:cesp32s3g20230208
+group.cxtensaesp32s3.compilers=cesp32s3g2020r3:cesp32s3g2021r1:cesp32s3g2021r2:cesp32s3g2022r1:cesp32s3g20230208:cesp32s3g20241119
 group.cxtensaesp32s3.groupName=Xtensa ESP32-S3 GCC
 group.cxtensaesp32s3.supportsBinary=false
 group.cxtensaesp32s3.instructionSet=xtensa
@@ -3148,6 +3154,9 @@ compiler.cesp32s3g2022r1.name=Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
 compiler.cesp32s3g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-12.2.0_20230208/bin/xtensa-esp32s3-elf-gcc
 compiler.cesp32s3g20230208.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-12.2.0_20230208/bin/xtensa-esp32s3-elf-objdump
 compiler.cesp32s3g20230208.name=Xtensa ESP32-S3 gcc 12.2.0 (20230208)
+compiler.cesp32s3g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s3-elf-gcc
+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
diff --git a/etc/config/cobol.amazon.properties b/etc/config/cobol.amazon.properties
index 72d864fb8..751551c0c 100644
--- a/etc/config/cobol.amazon.properties
+++ b/etc/config/cobol.amazon.properties
@@ -3,7 +3,7 @@ defaultCompiler=gnucobol32
 objdumper=/opt/compiler-explorer/gcc-13.1.0/bin/objdump
 
 group.gnucobol.groupName=GnuCOBOL
-group.gnucobol.compilers=gnucobol32:gnucobol32rc2:gnucobol31:gnucobol22
+group.gnucobol.compilers=gnucobol32:gnucobol32rc2:gnucobol31:gnucobol22:gnucobol11
 group.gnucobol.isSemVer=true
 group.gnucobol.baseName=GnuCOBOL
 group.gnucobol.licenseName=GPLv3
@@ -20,6 +20,9 @@ compiler.gnucobol31.version=3.1
 compiler.gnucobol22.exe=/opt/compiler-explorer/cobol/gnucobol-2.2/bin/cobc
 compiler.gnucobol22.name=GnuCOBOL 2.2
 compiler.gnucobol22.version=2.2
+compiler.gnucobol11.exe=/opt/compiler-explorer/cobol/gnucobol-1.1/bin/cobc
+compiler.gnucobol11.name=GnuCOBOL 1.1
+compiler.gnucobol11.version=1.1
 
 group.gcccobol.compilerType=gcccobol
 group.gcccobol.groupName=GCC
diff --git a/etc/config/cuda.amazon.properties b/etc/config/cuda.amazon.properties
index 6d956f5b2..e5d2bbb12 100644
--- a/etc/config/cuda.amazon.properties
+++ b/etc/config/cuda.amazon.properties
@@ -512,22 +512,24 @@ libs.cueigen.versions.334.version=3.3.4
 libs.cueigen.versions.334.path=/opt/compiler-explorer/libs/eigen/v3.3.4
 libs.cccl.name=CUDA Core Compute Libraries (CCCL)
 libs.cccl.description=Fundamental CUDA Compute libraries: Thrust, CUB, libcudacxx
-libs.cccl.versions=trunk:261:260:250:240:230:220
+libs.cccl.versions=trunk:270:261:260:250:240:230:220
 libs.cccl.url=http://www.github.com/NVIDIA/cccl
 libs.cccl.versions.trunk.version=trunk
 libs.cccl.versions.trunk.path=/opt/compiler-explorer/libs/cccl/trunk/thrust:/opt/compiler-explorer/libs/cccl/trunk/cub:/opt/compiler-explorer/libs/cccl/trunk/libcudacxx/include:/opt/compiler-explorer/libs/cccl/trunk/cudax/include
+libs.cccl.versions.270.version=2.7.0
+libs.cccl.versions.270.path=/opt/compiler-explorer/libs/cccl/v2.7.0/thrust:/opt/compiler-explorer/libs/cccl/v2.7.0/cub:/opt/compiler-explorer/libs/cccl/v2.7.0/libcudacxx/include:/opt/compiler-explorer/libs/cccl/v2.7.0/cudax/include
 libs.cccl.versions.261.version=2.6.1
-libs.cccl.versions.261.path=/opt/compiler-explorer/libs/cccl/2.6.1/thrust:/opt/compiler-explorer/libs/cccl/2.6.1/cub:/opt/compiler-explorer/libs/cccl/2.6.1/libcudacxx/include:/opt/compiler-explorer/libs/cccl/2.6.1/cudax/include
+libs.cccl.versions.261.path=/opt/compiler-explorer/libs/cccl/v2.6.1/thrust:/opt/compiler-explorer/libs/cccl/v2.6.1/cub:/opt/compiler-explorer/libs/cccl/v2.6.1/libcudacxx/include:/opt/compiler-explorer/libs/cccl/v2.6.1/cudax/include
 libs.cccl.versions.260.version=2.6.0
-libs.cccl.versions.260.path=/opt/compiler-explorer/libs/cccl/2.6.0/thrust:/opt/compiler-explorer/libs/cccl/2.6.0/cub:/opt/compiler-explorer/libs/cccl/2.6.0/libcudacxx/include:/opt/compiler-explorer/libs/cccl/2.6.0/cudax/include
+libs.cccl.versions.260.path=/opt/compiler-explorer/libs/cccl/v2.6.0/thrust:/opt/compiler-explorer/libs/cccl/v2.6.0/cub:/opt/compiler-explorer/libs/cccl/v2.6.0/libcudacxx/include:/opt/compiler-explorer/libs/cccl/v2.6.0/cudax/include
 libs.cccl.versions.250.version=2.5.0
-libs.cccl.versions.250.path=/opt/compiler-explorer/libs/cccl/2.5.0/thrust:/opt/compiler-explorer/libs/cccl/2.5.0/cub:/opt/compiler-explorer/libs/cccl/2.5.0/libcudacxx/include:/opt/compiler-explorer/libs/cccl/2.5.0/cudax/include
+libs.cccl.versions.250.path=/opt/compiler-explorer/libs/cccl/v2.5.0/thrust:/opt/compiler-explorer/libs/cccl/v2.5.0/cub:/opt/compiler-explorer/libs/cccl/v2.5.0/libcudacxx/include:/opt/compiler-explorer/libs/cccl/v2.5.0/cudax/include
 libs.cccl.versions.240.version=2.4.0
-libs.cccl.versions.240.path=/opt/compiler-explorer/libs/cccl/2.4.0/thrust:/opt/compiler-explorer/libs/cccl/2.4.0/cub:/opt/compiler-explorer/libs/cccl/2.4.0/libcudacxx/include
+libs.cccl.versions.240.path=/opt/compiler-explorer/libs/cccl/v2.4.0/thrust:/opt/compiler-explorer/libs/cccl/v2.4.0/cub:/opt/compiler-explorer/libs/cccl/v2.4.0/libcudacxx/include
 libs.cccl.versions.230.version=2.3.0
-libs.cccl.versions.230.path=/opt/compiler-explorer/libs/cccl/2.3.0/thrust:/opt/compiler-explorer/libs/cccl/2.3.0/cub:/opt/compiler-explorer/libs/cccl/2.3.0/libcudacxx/include
+libs.cccl.versions.230.path=/opt/compiler-explorer/libs/cccl/v2.3.0/thrust:/opt/compiler-explorer/libs/cccl/v2.3.0/cub:/opt/compiler-explorer/libs/cccl/v2.3.0/libcudacxx/include
 libs.cccl.versions.220.version=2.2.0
-libs.cccl.versions.220.path=/opt/compiler-explorer/libs/cccl/2.2.0/thrust:/opt/compiler-explorer/libs/cccl/2.2.0/cub:/opt/compiler-explorer/libs/cccl/2.2.0/libcudacxx/include
+libs.cccl.versions.220.path=/opt/compiler-explorer/libs/cccl/v2.2.0/thrust:/opt/compiler-explorer/libs/cccl/v2.2.0/cub:/opt/compiler-explorer/libs/cccl/v2.2.0/libcudacxx/include
 libs.thrustcub.name=Thrust+CUB (Legacy)
 libs.thrustcub.description=Use CUDA C++ Core Libraries (CCCL) for newer versions
 libs.thrustcub.versions=trunk:109090:109100:109101:110000:111000:112000:112100:113000:113100:114000:115000:116000:117000
diff --git a/etc/config/elixir.defaults.properties b/etc/config/elixir.defaults.properties
index 6d585862c..5422b97d0 100644
--- a/etc/config/elixir.defaults.properties
+++ b/etc/config/elixir.defaults.properties
@@ -1,15 +1,23 @@
 # Default settings for Elixir
-compilers=&elixir
-compilerType=elixir
+compilers=&elixir:&elixirasm
+
 versionFlag=--short-version
 objdumper=
-instructionSet=beam
 
 group.elixir.compilers=elixirdefault
+group.elixir.compilerType=elixir
+group.elixir.instructionSet=beam
 compiler.elixirdefault.exe=/urs/bin/elixir
 compiler.elixirdefault.runtime=/urs/bin/elixir
 compiler.elixirdefault.name=elixirc default
 
+group.elixirasm.compilers=elixirasmdefault
+group.elixirasm.compilerType=elixirasm
+group.elixirasm.instructionSet=amd64
+compiler.elixirasmdefault.exe=/urs/bin/elixir
+compiler.elixirasmdefault.runtime=/urs/bin/elixir
+compiler.elixirasmdefault.name=elixirc default
+
 defaultCompiler=elixirdefault
 demangler=
 postProcess=
diff --git a/etc/config/gimple.amazon.properties b/etc/config/gimple.amazon.properties
index 60b4410f4..1d1693443 100644
--- a/etc/config/gimple.amazon.properties
+++ b/etc/config/gimple.amazon.properties
@@ -184,7 +184,7 @@ compiler.gimpleavrg1420.demangler=/opt/compiler-explorer/avr/gcc-14.2.0/avr/bin/
 
 ################################
 # GCC for Xtensa ESP32
-group.gimplextensaesp32.compilers=gimpleesp32g2022r1:gimpleesp32g20230208
+group.gimplextensaesp32.compilers=gimpleesp32g2022r1:gimpleesp32g20230208:gimpleesp32g20241119
 group.gimplextensaesp32.groupName=Xtensa ESP32 GCC
 group.gimplextensaesp32.supportsBinary=false
 group.gimplextensaesp32.instructionSet=xtensa
@@ -197,10 +197,13 @@ compiler.gimpleesp32g2022r1.name=Xtensa ESP32 gcc 11.2.0 (2022r1)
 compiler.gimpleesp32g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-12.2.0_20230208/bin/xtensa-esp32-elf-gcc
 compiler.gimpleesp32g20230208.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32-elf-12.2.0_20230208/bin/xtensa-esp32-elf-objdump
 compiler.gimpleesp32g20230208.name=Xtensa ESP32 gcc 12.2.0 (20230208)
+compiler.gimpleesp32g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32-elf-gcc
+compiler.gimpleesp32g20241119.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32-elf-objdump
+compiler.gimpleesp32g20241119.name=Xtensa ESP32 gcc 14.2.0 (20241119)
 
 ################################
 # GCC for Xtensa ESP32-S2
-group.gimplextensaesp32s2.compilers=gimpleesp32s2g2022r1:gimpleesp32s2g20230208
+group.gimplextensaesp32s2.compilers=gimpleesp32s2g2022r1:gimpleesp32s2g20230208:gimpleesp32s2g20241119
 group.gimplextensaesp32s2.groupName=Xtensa ESP32-S2 GCC
 group.gimplextensaesp32s2.supportsBinary=false
 group.gimplextensaesp32s2.instructionSet=xtensa
@@ -213,10 +216,13 @@ compiler.gimpleesp32s2g2022r1.name=Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
 compiler.gimpleesp32s2g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-12.2.0_20230208/bin/xtensa-esp32s2-elf-gcc
 compiler.gimpleesp32s2g20230208.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s2-elf-12.2.0_20230208/bin/xtensa-esp32s2-elf-objdump
 compiler.gimpleesp32s2g20230208.name=Xtensa ESP32-S2 gcc 12.2.0 (20230208)
+compiler.gimpleesp32s2g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s2-elf-gcc
+compiler.gimpleesp32s2g20241119.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s2-elf-objdump
+compiler.gimpleesp32s2g20241119.name=Xtensa ESP32-S2 gcc 14.2.0 (20241119)
 
 ################################
 # GCC for Xtensa ESP32-S3
-group.gimplextensaesp32s3.compilers=gimpleesp32s3g2022r1:gimpleesp32s3g20230208
+group.gimplextensaesp32s3.compilers=gimpleesp32s3g2022r1:gimpleesp32s3g20230208:gimpleesp32s3g20241119
 group.gimplextensaesp32s3.groupName=Xtensa ESP32-S3 GCC
 group.gimplextensaesp32s3.supportsBinary=false
 group.gimplextensaesp32s3.instructionSet=xtensa
@@ -229,6 +235,9 @@ compiler.gimpleesp32s3g2022r1.name=Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
 compiler.gimpleesp32s3g20230208.exe=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-12.2.0_20230208/bin/xtensa-esp32s3-elf-gcc
 compiler.gimpleesp32s3g20230208.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp32s3-elf-12.2.0_20230208/bin/xtensa-esp32s3-elf-objdump
 compiler.gimpleesp32s3g20230208.name=Xtensa ESP32-S3 gcc 12.2.0 (20230208)
+compiler.gimpleesp32s3g20241119.exe=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s3-elf-gcc
+compiler.gimpleesp32s3g20241119.objdumper=/opt/compiler-explorer/xtensa/xtensa-esp-elf-14.2.0_20241119/bin/xtensa-esp32s3-elf-objdump
+compiler.gimpleesp32s3g20241119.name=Xtensa ESP32-S3 gcc 14.2.0 (20241119)
 
 ###############################
 # GCC for Kalray
diff --git a/etc/config/ispc.amazon.properties b/etc/config/ispc.amazon.properties
index 475213481..639085c5a 100644
--- a/etc/config/ispc.amazon.properties
+++ b/etc/config/ispc.amazon.properties
@@ -1,54 +1,77 @@
 compilers=&ispc
 defaultCompiler=ispc1253
+objdumper=/opt/compiler-explorer/gcc-14.2.0/bin/objdump
 
 group.ispc.compilers=ispc1253:ispc1250:ispc1240:ispc1230:ispc1220:ispc1210:ispc1200:ispc1190:ispc1180:ispc1170:ispc1161:ispc1160:ispc1150:ispc1141:ispc1140:ispc1130:ispc1120:ispc1110:ispc1100:ispc192:ispc191:ispc-trunk
 group.ispc.isSemVer=true
 group.ispc.baseName=ispc
 compiler.ispc1253.exe=/opt/compiler-explorer/ispc-1.25.3/bin/ispc
 compiler.ispc1253.semver=1.25.3
+compiler.ispc1253.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1250.exe=/opt/compiler-explorer/ispc-1.25.0/bin/ispc
 compiler.ispc1250.semver=1.25.0
+compiler.ispc1250.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1240.exe=/opt/compiler-explorer/ispc-1.24.0/bin/ispc
 compiler.ispc1240.semver=1.24.0
+compiler.ispc1240.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1230.exe=/opt/compiler-explorer/ispc-1.23.0/bin/ispc
 compiler.ispc1230.semver=1.23.0
+compiler.ispc1230.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1220.exe=/opt/compiler-explorer/ispc-1.22.0/bin/ispc
 compiler.ispc1220.semver=1.22.0
+compiler.ispc1220.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1210.exe=/opt/compiler-explorer/ispc-1.21.0/bin/ispc
 compiler.ispc1210.semver=1.21.0
+compiler.ispc1210.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1200.exe=/opt/compiler-explorer/ispc-1.20.0/bin/ispc
 compiler.ispc1200.semver=1.20.0
+compiler.ispc1200.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1190.exe=/opt/compiler-explorer/ispc-1.19.0/bin/ispc
 compiler.ispc1190.semver=1.19.0
+compiler.ispc1190.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1180.exe=/opt/compiler-explorer/ispc-1.18.0/bin/ispc
 compiler.ispc1180.semver=1.18.0
+compiler.ispc1180.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1170.exe=/opt/compiler-explorer/ispc-1.17.0/bin/ispc
 compiler.ispc1170.semver=1.17.0
+compiler.ispc1170.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1161.exe=/opt/compiler-explorer/ispc-1.16.1/bin/ispc
 compiler.ispc1161.semver=1.16.1
+compiler.ispc1161.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1160.exe=/opt/compiler-explorer/ispc-1.16.0/bin/ispc
 compiler.ispc1160.semver=1.16.0
+compiler.ispc1160.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1150.exe=/opt/compiler-explorer/ispc-1.15.0/bin/ispc
 compiler.ispc1150.semver=1.15.0
+compiler.ispc1150.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1141.exe=/opt/compiler-explorer/ispc-1.14.1/bin/ispc
 compiler.ispc1141.semver=1.14.1
+compiler.ispc1141.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1140.exe=/opt/compiler-explorer/ispc-1.14.0/bin/ispc
 compiler.ispc1140.semver=1.14.0
+compiler.ispc1140.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1130.exe=/opt/compiler-explorer/ispc-1.13.0/bin/ispc
 compiler.ispc1130.semver=1.13.0
+compiler.ispc1130.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1120.exe=/opt/compiler-explorer/ispc-1.12.0/bin/ispc
 compiler.ispc1120.semver=1.12.0
+compiler.ispc1120.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1110.exe=/opt/compiler-explorer/ispc-1.11.0/bin/ispc
 compiler.ispc1110.semver=1.11.0
+compiler.ispc1110.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc1100.exe=/opt/compiler-explorer/ispc-1.10.0/bin/ispc
 compiler.ispc1100.semver=1.10.0
+compiler.ispc1100.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc192.exe=/opt/compiler-explorer/ispc-1.9.2/ispc
 compiler.ispc192.semver=1.9.2
+compiler.ispc192.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc191.exe=/opt/compiler-explorer/ispc-1.9.1/ispc
 compiler.ispc191.semver=1.9.1
+compiler.ispc191.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 compiler.ispc-trunk.exe=/opt/compiler-explorer/ispc-trunk/bin/ispc
 compiler.ispc-trunk.semver=(trunk)
 compiler.ispc-trunk.isNightly=true
+compiler.ispc-trunk.executableLinker=/opt/compiler-explorer/gcc-14.2.0/bin/gcc
 
 #################################
 #################################
diff --git a/etc/config/ispc.defaults.properties b/etc/config/ispc.defaults.properties
index c8e124747..cc2c9dc29 100644
--- a/etc/config/ispc.defaults.properties
+++ b/etc/config/ispc.defaults.properties
@@ -1,6 +1,10 @@
-supportsBinary=false
+supportsBinary=true
+supportsBinaryObject=true
+supportsExecute=true
 compilerType=ispc
-
+objdumper=objdump
+stubRe=\bmain\b
+stubText=extern "C" uniform int main() { return 0; }
 
 #################################
 #################################
diff --git a/etc/config/llvm.amazon.properties b/etc/config/llvm.amazon.properties
index c75f54cf6..8cec56218 100644
--- a/etc/config/llvm.amazon.properties
+++ b/etc/config/llvm.amazon.properties
@@ -1,4 +1,4 @@
-compilers=&irclang:&llc:&opt
+compilers=&irclang:&irhexagon-clang:&llc:&opt
 defaultCompiler=llctrunk
 
 demangler=/opt/compiler-explorer/gcc-14.2.0/bin/c++filt
@@ -61,6 +61,18 @@ compiler.irclang-assertions-trunk.exe=/opt/compiler-explorer/clang-assertions-tr
 compiler.irclang-assertions-trunk.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump
 compiler.irclang-assertions-trunk.semver=(assertions trunk)
 
+group.irhexagon-clang.groupName=Hexagon clang
+group.irhexagon-clang.baseName=hexagon-clang
+group.irhexagon-clang.compilers=irhexagonclang1605
+group.irhexagon-clang.demangler=/opt/compiler-explorer/clang-trunk/bin/llvm-cxxfilt
+group.irhexagon-clang.options=-x ir
+
+compiler.irhexagonclang1605.semver=16.0.5
+compiler.irhexagonclang1605.name=hexagon-clang 16.0.5
+compiler.irhexagonclang1605.exe=/opt/compiler-explorer/clang+llvm-16.0.5-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/clang++
+compiler.irhexagonclang1605.compilerType=clang-hexagon
+compiler.irhexagonclang1605.compilerCategories=clang-hexagon
+
 group.llc.compilers=llc32:llc33:llc391:llc400:llc401:llc500:llc600:llc700:llc800:llc900:llc1000:llc1001:llc1100:llc1101:llc1200:llc1201:llc1300:llc1400:llc1500:llc1600:llc1701:llc1810:llc1910:llctrunk:llc-assertions-trunk
 group.llc.compilerType=llc
 group.llc.supportsExecute=false
diff --git a/etc/config/odin.amazon.properties b/etc/config/odin.amazon.properties
index 81887838f..7dd307d20 100644
--- a/etc/config/odin.amazon.properties
+++ b/etc/config/odin.amazon.properties
@@ -1,15 +1,18 @@
 compilers=&odin
 compilerType=odin
-defaultCompiler=odin202411
+defaultCompiler=odin202501
 supportsBinary=true
 supportsExecute=true
 
 objdumper=/opt/compiler-explorer/gcc-14.2.0/bin/objdump
 clangPath=/opt/compiler-explorer/clang-19.1.0/bin/clang
 
-group.odin.compilers=odin202411
+group.odin.compilers=odin202411:odin202501
 group.odin.isSemVer=false
 group.odin.baseName=odin
 
 compiler.odin202411.exe=/opt/compiler-explorer/odin-dev-2024-11/odin
 compiler.odin202411.name=Odin (2024-11)
+
+compiler.odin202501.exe=/opt/compiler-explorer/odin-dev-2025-01/odin
+compiler.odin202501.name=Odin (2025-01)
diff --git a/etc/config/rust.amazon.properties b/etc/config/rust.amazon.properties
index 81cd8aea5..e9eaa0dbc 100644
--- a/etc/config/rust.amazon.properties
+++ b/etc/config/rust.amazon.properties
@@ -983,7 +983,13 @@ libs.zerocopy.versions.0732.path=libzerocopy.rlib
 #################################
 # Installed tools
 
-tools=llvm-mcatrunk:llvm-dwarfdumptrunk:osacatrunk:rustfmt1436:bloaty11
+tools=ldd:llvm-mcatrunk:llvm-dwarfdumptrunk:osacatrunk:pahole:readelf:nm:strings:rustfmt1436:bloaty11
+
+tools.ldd.name=ldd
+tools.ldd.exe=/usr/bin/ldd
+tools.ldd.type=postcompilation
+tools.ldd.class=readelf-tool
+tools.ldd.stdinHint=disabled
 
 tools.llvm-mcatrunk.name=llvm-mca (trunk)
 tools.llvm-mcatrunk.exe=/opt/compiler-explorer/clang-trunk/bin/llvm-mca
@@ -1003,6 +1009,31 @@ tools.osacatrunk.type=postcompilation
 tools.osacatrunk.class=osaca-tool
 tools.osacatrunk.stdinHint=disabled
 
+tools.pahole.name=pahole (trunk)
+tools.pahole.exe=/opt/compiler-explorer/pahole-trunk/bin/pahole
+tools.pahole.type=postcompilation
+tools.pahole.class=pahole-tool
+tools.pahole.stdinHint=disabled
+tools.pahole.languageId=cppp
+
+tools.readelf.name=readelf (trunk)
+tools.readelf.exe=/opt/compiler-explorer/gcc-snapshot/bin/readelf
+tools.readelf.type=postcompilation
+tools.readelf.class=readelf-tool
+tools.readelf.stdinHint=disabled
+
+tools.nm.name=nm (trunk)
+tools.nm.exe=/opt/compiler-explorer/gcc-snapshot/bin/nm
+tools.nm.type=postcompilation
+tools.nm.class=nm-tool
+tools.nm.stdinHint=disabled
+
+tools.strings.exe=/opt/compiler-explorer/gcc-snapshot/bin/strings
+tools.strings.name=strings
+tools.strings.type=postcompilation
+tools.strings.class=strings-tool
+tools.strings.stdinHint=disabled
+
 # This tool has the "rustfmmt1436" name for legacy reasons. It was initially introduced when Rustfmt was a separate
 # component, not distributed with the Rust compiler. The tool is still named "rustfmt1436" to avoid breaking existing
 # shortlinks.
diff --git a/etc/config/slang.amazon.properties b/etc/config/slang.amazon.properties
index 7a25d2d13..ac3102a94 100644
--- a/etc/config/slang.amazon.properties
+++ b/etc/config/slang.amazon.properties
@@ -1,13 +1,16 @@
 compilers=&defaultslangc
 
-defaultCompiler=slangc_2024_14_6
+defaultCompiler=slangc_2025_2_2
 supportsBinary=false
 compilerType=slang
 instructionSet=spirv
 
 disassemblerPath=/opt/compiler-explorer/SPIRV-Tools-master/build/tools/spirv-dis
 
-group.defaultslangc.compilers=slangc_2024_14_6
+group.defaultslangc.compilers=slangc_2024_14_6:slangc_2025_2_2
 group.defaultslangc.versionFlag=-version
+
 compiler.slangc_2024_14_6.exe=/opt/compiler-explorer/slang-2024.14.6/bin/slangc
 compiler.slangc_2024_14_6.name=slangc 2024.14.6
+compiler.slangc_2025_2_2.exe=/opt/compiler-explorer/slang-2025.2.2/bin/slangc
+compiler.slangc_2025_2_2.name=slangc 2025.2.2
diff --git a/etc/config/spice.amazon.properties b/etc/config/spice.amazon.properties
index 139a4f43b..d4ebad7a6 100644
--- a/etc/config/spice.amazon.properties
+++ b/etc/config/spice.amazon.properties
@@ -1,19 +1,19 @@
 compilers=&spice
-defaultCompiler=spice02006
+defaultCompiler=spice02100
 
-group.spice.compilers=spice01902:spice01903:spice01904:spice01905:spice01906:spice02000:spice02001:spice02002:spice02003:spice02004:spice02005:spice02006
-group.spice.demangler=/opt/compiler-explorer/gcc-14.1.0/bin/c++filt
-group.spice.objdumper=/opt/compiler-explorer/gcc-14.1.0/bin/objdump
+group.spice.compilers=spice01902:spice01903:spice01904:spice01905:spice01906:spice02000:spice02001:spice02002:spice02003:spice02004:spice02005:spice02006:spice02100
+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
 group.spice.baseName=spice
 group.spice.compilerType=spice
 group.spice.versionFlag=--version
 group.spice.licenseLink=https://github.com/spicelang/spice/blob/main/LICENSE
 group.spice.licenseName=The MIT License
-group.spice.licensePreamble=Copyright (c) 2021-2024 Marc Auberer
+group.spice.licensePreamble=Copyright (c) 2021-2025 Marc Auberer
 
 # spice needs to be able to find clang for linking
-group.spice.extraPath=/opt/compiler-explorer/clang-18.1.0/bin
+group.spice.extraPath=/opt/compiler-explorer/clang-19.1.0/bin
 
 compiler.spice01902.exe=/opt/compiler-explorer/spice-0.19.2/spice
 compiler.spice01902.semver=0.19.2
@@ -39,6 +39,8 @@ compiler.spice02005.exe=/opt/compiler-explorer/spice-0.20.5/spice
 compiler.spice02005.semver=0.20.5
 compiler.spice02006.exe=/opt/compiler-explorer/spice-0.20.6/spice
 compiler.spice02006.semver=0.20.6
+compiler.spice02100.exe=/opt/compiler-explorer/spice-0.21.0/spice
+compiler.spice02100.semver=0.21.0
 
 #################################
 #################################
diff --git a/etc/config/spirv.amazon.properties b/etc/config/spirv.amazon.properties
index 6b3b003d6..0caf5633e 100644
--- a/etc/config/spirv.amazon.properties
+++ b/etc/config/spirv.amazon.properties
@@ -1,4 +1,4 @@
-compilers=&spirv-opt:&spirv-val:&spirv-cross
+compilers=&spirv-opt:&spirv-val:&spirv-cross:&spirv-reflect
 defaultCompiler=spirv-opt-master
 
 supportsBinary=false
@@ -17,9 +17,14 @@ group.spirv-val.compilerType=spirv-tools
 
 group.spirv-cross.groupName=Translate
 group.spirv-cross.baseName=SPIRV-Cross
-group.spirv-cross.compilers=spirv-cross-sdk-296
+group.spirv-cross.compilers=spirv-cross-sdk-296:spirv-cross-sdk-304
 group.spirv-cross.compilerType=spirv-tools
 
+group.spirv-reflect.groupName=Reflection
+group.spirv-reflect.baseName=SPIRV-Reflect
+group.spirv-reflect.compilers=spirv-reflect-sdk-304
+group.spirv-reflect.compilerType=spirv-tools
+
 assemblerPath=/opt/compiler-explorer/SPIRV-Tools-master/build/tools/spirv-as
 disassemblerPath=/opt/compiler-explorer/SPIRV-Tools-master/build/tools/spirv-dis
 compiler.spirv-opt-master.exe=/opt/compiler-explorer/SPIRV-Tools-master/build/tools/spirv-opt
@@ -27,5 +32,11 @@ compiler.spirv-opt-master.name=spirv-opt (trunk)
 compiler.spirv-val-master.exe=/opt/compiler-explorer/SPIRV-Tools-master/build/tools/spirv-val
 compiler.spirv-val-master.name=spirv-val (trunk)
 
+# SPIRV-Reflect needed stdout fix not added until 304 SDK
 compiler.spirv-cross-sdk-296.exe=/opt/compiler-explorer/vulkan-sdk/v1.3.296.0/x86_64/bin/spirv-cross
 compiler.spirv-cross-sdk-296.name=spirv-cross (sdk-296)
+
+compiler.spirv-cross-sdk-304.exe=/opt/compiler-explorer/vulkan-sdk/v1.4.304.0/x86_64/bin/spirv-cross
+compiler.spirv-cross-sdk-304.name=spirv-cross (sdk-304)
+compiler.spirv-reflect-sdk-304.exe=/opt/compiler-explorer/vulkan-sdk/v1.4.304.0/x86_64/bin/spirv-reflect
+compiler.spirv-reflect-sdk-304.name=spirv-reflect (sdk-304)
diff --git a/examples/ispc/default.ispc b/examples/ispc/default.ispc
index 0924dc0b6..8d8ec61ac 100644
--- a/examples/ispc/default.ispc
+++ b/examples/ispc/default.ispc
@@ -1,4 +1,18 @@
 // Type your code here, or load an example.
-uniform int square(uniform int num) {
-    return num * num;
+varying int square_even(varying int num) {
+    if (num % 2 == 0) {
+        return num * num;
+    } else {
+        return num;
+    }
 }
+
+// Uncomment this if you would like to execute the code
+/*
+extern "C" uniform int main() {
+    print("Hello, World!\n");
+    print("programCount = %\n", programCount);
+    print("square_even(%) = %\n", programIndex, square_even(programIndex));
+    return 0;
+}
+*/
diff --git a/lib/base-compiler.ts b/lib/base-compiler.ts
index 5b9ac7447..23d814dc0 100644
--- a/lib/base-compiler.ts
+++ b/lib/base-compiler.ts
@@ -1190,17 +1190,12 @@ export class BaseCompiler {
 
         const libIncludes = this.getIncludeArguments(libraries, dirPath);
         const libOptions = this.getLibraryOptions(libraries);
-        let libLinks: string[] = [];
-        let libPaths: string[] = [];
-        let libPathsAsFlags: string[] = [];
-        let staticLibLinks: string[] = [];
-
-        if (filters.binary) {
-            libLinks = (this.getSharedLibraryLinks(libraries).filter(Boolean) as string[]) || [];
-            libPathsAsFlags = this.getSharedLibraryPathsAsArguments(libraries, undefined, toolchainPath, dirPath);
-            libPaths = this.getSharedLibraryPaths(libraries, dirPath);
-            staticLibLinks = (this.getStaticLibraryLinks(libraries, libPaths).filter(Boolean) as string[]) || [];
-        }
+        const {libLinks, libPathsAsFlags, staticLibLinks} = this.getLibLinkInfo(
+            filters,
+            libraries,
+            toolchainPath,
+            dirPath,
+        );
 
         userOptions = this.filterUserOptions(userOptions) || [];
         [options, overrides] = this.fixIncompatibleOptions(options, userOptions, overrides);
@@ -1218,6 +1213,25 @@ export class BaseCompiler {
         );
     }
 
+    protected getLibLinkInfo(
+        filters: ParseFiltersAndOutputOptions,
+        libraries: SelectedLibraryVersion[],
+        toolchainPath: string,
+        dirPath: string,
+    ) {
+        let libLinks: string[] = [];
+        let libPathsAsFlags: string[] = [];
+        let staticLibLinks: string[] = [];
+
+        if (filters.binary) {
+            libLinks = (this.getSharedLibraryLinks(libraries).filter(Boolean) as string[]) || [];
+            libPathsAsFlags = this.getSharedLibraryPathsAsArguments(libraries, undefined, toolchainPath, dirPath);
+            const libPaths = this.getSharedLibraryPaths(libraries, dirPath);
+            staticLibLinks = (this.getStaticLibraryLinks(libraries, libPaths).filter(Boolean) as string[]) || [];
+        }
+        return {libLinks, libPathsAsFlags, staticLibLinks};
+    }
+
     protected fixIncompatibleOptions(
         options: string[],
         userOptions: string[],
@@ -1651,9 +1665,14 @@ export class BaseCompiler {
         return utils.changeExtension(inputFilename, '.ll');
     }
 
-    getOutputFilename(dirPath: string, outputFilebase: string, key?: any): string {
-        let filename;
-        if (key && key.backendOptions && key.backendOptions.customOutputFilename) {
+    isCacheKey(key: CacheKey | CompilationCacheKey | undefined): key is CacheKey {
+        return key !== undefined && (key as CacheKey).backendOptions !== undefined;
+    }
+
+    getOutputFilename(dirPath: string, outputFilebase: string, key?: CacheKey | CompilationCacheKey): string {
+        let filename: string;
+
+        if (this.isCacheKey(key) && key.backendOptions.customOutputFilename) {
             filename = key.backendOptions.customOutputFilename;
         } else {
             filename = `${outputFilebase}.s`;
@@ -1803,7 +1822,7 @@ export class BaseCompiler {
 
     buildExecutable(compiler: string, options: string[], inputFilename: string, execOptions: ExecutionOptionsWithEnv) {
         // default implementation, but should be overridden by compilers
-        return this.runCompiler(compiler, options, inputFilename, execOptions);
+        return this.runCompiler(compiler, options, inputFilename, execOptions, {execute: true, binary: true});
     }
 
     protected maskPathsInArgumentsForUser(args: string[]): string[] {
diff --git a/lib/compilers/_all.ts b/lib/compilers/_all.ts
index 5e10b9f3c..75f445722 100644
--- a/lib/compilers/_all.ts
+++ b/lib/compilers/_all.ts
@@ -63,10 +63,11 @@ export {
     DotNetNativeAotCompiler,
 } from './dotnet.js';
 export {EDGCompiler} from './edg.js';
-export {EllccCompiler} from './ellcc.js';
+export {ElixirAsmCompiler} from './elixirasm.js';
 export {ElixirCompiler} from './elixir.js';
-export {ErlangCompiler} from './erlang.js';
+export {EllccCompiler} from './ellcc.js';
 export {ErlangAsmCompiler} from './erlangasm.js';
+export {ErlangCompiler} from './erlang.js';
 export {EWARMCompiler} from './ewarm.js';
 export {EWAVRCompiler} from './ewavr.js';
 export {FakeCompiler} from './fake-for-test.js';
diff --git a/lib/compilers/clang.ts b/lib/compilers/clang.ts
index 74cc1a36a..938763e68 100644
--- a/lib/compilers/clang.ts
+++ b/lib/compilers/clang.ts
@@ -374,9 +374,15 @@ export class ClangIntelCompiler extends ClangCompiler {
         super(info, env);
 
         if (!this.offloadBundlerPath) {
+            // clang-offload-bundler is in a different folder in versions >= 2024.0.0
             const offloadBundlerPath = path.join(path.dirname(this.compiler.exe), '../bin-llvm/clang-offload-bundler');
             if (fs.existsSync(offloadBundlerPath)) {
                 this.offloadBundlerPath = path.resolve(offloadBundlerPath);
+            } else {
+                const offloadBundlerPath = path.join(path.dirname(this.compiler.exe), 'compiler/clang-offload-bundler');
+                if (fs.existsSync(offloadBundlerPath)) {
+                    this.offloadBundlerPath = path.resolve(offloadBundlerPath);
+                }
             }
         }
     }
diff --git a/lib/compilers/dex2oat.ts b/lib/compilers/dex2oat.ts
index fbfa80729..6fe875606 100644
--- a/lib/compilers/dex2oat.ts
+++ b/lib/compilers/dex2oat.ts
@@ -145,7 +145,7 @@ export class Dex2OatCompiler extends BaseCompiler {
 
         // Regexes that apply to .smali files (R8/D8 dump output).
         this.smaliLineNumberRegex = /^\s+\.line\s+(\d+).*$/;
-        this.smaliClassRegex = /^\.class\s(.*)$/;
+        this.smaliClassRegex = /^\.class\s.*(L.*;)$/;
         this.smaliDexPcRegex = /^\s+#@(\w+).*$/;
         this.smaliMethodStartRegex = /^\.method\s(.*)$/;
         this.smaliMethodEndRegex = /^\s*\.end\smethod.*$/;
diff --git a/lib/compilers/elixirasm.ts b/lib/compilers/elixirasm.ts
new file mode 100644
index 000000000..ec5a66614
--- /dev/null
+++ b/lib/compilers/elixirasm.ts
@@ -0,0 +1,73 @@
+// 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 path from 'path';
+
+import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
+import {BaseCompiler} from '../base-compiler.js';
+
+import {ElixirParser} from './argument-parsers.js';
+
+export class ElixirAsmCompiler extends BaseCompiler {
+    static get key() {
+        return 'elixirasm';
+    }
+
+    override optionsForFilter(filters: ParseFiltersAndOutputOptions, outputFilename: string): string[] {
+        return [
+            '--eval',
+            '[input] = Code.required_files();' +
+                'code = Code.compile_file(input);' +
+                ':erts_debug.set_internal_state(:available_internal_state, true);' +
+                ':erts_debug.set_internal_state(:jit_asm_dump, true);' +
+                'code = Code.compile_file(input)' +
+                '|> Enum.map(fn {module,_} -> File.read!(:erlang.atom_to_list(module) ++ ".asm") end) ' +
+                '|> Enum.join("\n"); ' +
+                `:ok = File.write("${outputFilename}", code);`,
+        ];
+    }
+
+    override orderArguments(
+        options: string[],
+        inputFilename: string,
+        libIncludes: string[],
+        libOptions: string[],
+        libPaths: string[],
+        libLinks: string[],
+        userOptions: string[],
+        staticLibLinks: string[],
+    ): string[] {
+        return ['-r', inputFilename]
+            .concat(options)
+            .concat(libIncludes, libOptions, libPaths, libLinks, userOptions, staticLibLinks);
+    }
+
+    override getOutputFilename(dirPath: string, outputFilebase: string): string {
+        return path.join(dirPath, `${outputFilebase}.asm`);
+    }
+
+    override getArgumentParserClass() {
+        return ElixirParser;
+    }
+}
diff --git a/lib/compilers/ispc.ts b/lib/compilers/ispc.ts
index 271b527b8..29dbcb2c9 100644
--- a/lib/compilers/ispc.ts
+++ b/lib/compilers/ispc.ts
@@ -22,20 +22,31 @@
 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 // POSSIBILITY OF SUCH DAMAGE.
 
+import fs from 'fs-extra';
 import Semver from 'semver';
 
+import {
+    CacheKey,
+    CompilationCacheKey,
+    CompilationResult,
+    ExecutionOptionsWithEnv,
+} from '../../types/compilation/compilation.interfaces.js';
 import {LLVMIrBackendOptions} from '../../types/compilation/ir.interfaces.js';
 import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
 import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
+import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
 import type {ResultLine} from '../../types/resultline/resultline.interfaces.js';
 import {unwrap} from '../assert.js';
 import {BaseCompiler} from '../base-compiler.js';
 import {CompilationEnvironment} from '../compilation-env.js';
 import {asSafeVer} from '../utils.js';
+import * as utils from '../utils.js';
 
 import {ISPCParser} from './argument-parsers.js';
 
 export class ISPCCompiler extends BaseCompiler {
+    private readonly executableLinker: string;
+
     static get key() {
         return 'ispc';
     }
@@ -44,16 +55,40 @@ export class ISPCCompiler extends BaseCompiler {
         super(info, env);
         this.compiler.supportsIrView = true;
         this.compiler.irArg = ['--emit-llvm-text'];
+        // TODO(#7150) do away with this kind of thing and share the same linker for everything.
+        this.executableLinker = this.compilerProps<string>(`compiler.${this.compiler.id}.executableLinker`);
     }
 
     override couldSupportASTDump(version: string) {
         return Semver.gte(asSafeVer(this.compiler.semver), '1.18.0', true);
     }
 
+    override getOutputFilename(dirPath: string, outputFilebase: string, key?: CacheKey | CompilationCacheKey): string {
+        const outputFilename = super.getOutputFilename(dirPath, outputFilebase, key);
+        if (this.isCacheKey(key)) {
+            // ispc gets a bit annoyed about the output filename extension. If we're in binary object mode we _have_ to
+            // output a `.o` file, else ispc complains.
+            if (key.filters.binary || key.filters.binaryObject) {
+                return utils.changeExtension(outputFilename, '.o');
+            }
+        }
+        return outputFilename;
+    }
+
+    override getExecutableFilename(dirPath: string, outputFilebase: string, key?: CacheKey | CompilationCacheKey) {
+        // ispc gets a bit annoyed about the output filename extension. If we're in binary object mode we _have_ to
+        // output a `.o` file, else ispc complains. We can't defer this to getOutputFilename, else we'll rename the
+        // output of executed but non-binary, non-binary-object files, which need to remain `.s`.
+        return utils.changeExtension(super.getOutputFilename(dirPath, outputFilebase, key), '.o');
+    }
+
     override optionsForFilter(filters: ParseFiltersAndOutputOptions, outputFilename: string) {
-        let options = ['--target=avx2-i32x8', '--emit-asm', '-g', '-o', this.filename(outputFilename)];
+        const options = ['--target=avx2-i32x8', '-g', '-o', this.filename(outputFilename)];
+        if (!filters.binary && !filters.binaryObject) {
+            options.push('--emit-asm');
+        }
         if (this.compiler.intelAsm && filters.intel && !filters.binary) {
-            options = options.concat(this.compiler.intelAsm.split(' '));
+            options.push(...this.compiler.intelAsm.split(' '));
         }
         return options;
     }
@@ -91,7 +126,43 @@ export class ISPCCompiler extends BaseCompiler {
         );
     }
 
+    override getLibLinkInfo(
+        filters: ParseFiltersAndOutputOptions,
+        libraries: SelectedLibraryVersion[],
+        toolchainPath: string,
+        dirPath: string,
+    ) {
+        // Prevent any library linking flags from being passed to ispc during compilation.
+        return {libLinks: [], libPathsAsFlags: [], staticLibLinks: []};
+    }
+
     override isCfgCompiler() {
         return true;
     }
+
+    async linkExecutable(options: string[], execOptions: ExecutionOptionsWithEnv) {
+        // Rely on the fact we definitely put a `-o` in the options.
+        const outputFile = options[options.indexOf('-o') + 1];
+        const renamedFile = outputFile + '.tmp';
+        await fs.rename(outputFile, renamedFile);
+        return await this.exec(this.executableLinker, ['-o', outputFile, renamedFile], execOptions);
+    }
+
+    override async runCompiler(
+        compiler: string,
+        options: string[],
+        inputFilename: string,
+        execOptions: ExecutionOptionsWithEnv,
+        filters?: ParseFiltersAndOutputOptions,
+    ): Promise<CompilationResult> {
+        const result = await super.runCompiler(compiler, options, inputFilename, execOptions, filters);
+        if (result.code !== 0) return result;
+        if (filters?.binary) {
+            const linkResult = await this.linkExecutable(options, execOptions);
+            if (linkResult.code !== 0) {
+                return {...result, ...this.transformToCompilationResult(linkResult, inputFilename)};
+            }
+        }
+        return result;
+    }
 }
diff --git a/lib/parsers/asm-parser.ts b/lib/parsers/asm-parser.ts
index 70034d264..0b6af58da 100644
--- a/lib/parsers/asm-parser.ts
+++ b/lib/parsers/asm-parser.ts
@@ -99,7 +99,7 @@ export class AsmParser extends AsmRegex implements IAsmParser {
         this.labelFindMips = /[$.A-Z_a-z][\w$.]*/g;
         this.mipsLabelDefinition = /^\$[\w$.]+:/;
         this.dataDefn =
-            /^\s*\.(ascii|asciz|[1248]?byte|dc(?:\.[abdlswx])?|dcb(?:\.[bdlswx])?|ds(?:\.[bdlpswx])?|double|dword|fill|float|half|hword|int|long|octa|quad|short|single|skip|space|string(?:8|16|32|64)?|value|word|xword|zero)/;
+            /^\s*\.(ascii|asciz|base64|[1248]?byte|dc(?:\.[abdlswx])?|dcb(?:\.[bdlswx])?|ds(?:\.[bdlpswx])?|double|dword|fill|float|half|hword|int|long|octa|quad|short|single|skip|space|string(?:8|16|32|64)?|value|word|xword|zero)/;
         this.fileFind = /^\s*\.(?:cv_)?file\s+(\d+)\s+"([^"]+)"(\s+"([^"]+)")?.*/;
         // 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]/;
diff --git a/package-lock.json b/package-lock.json
index a94e349e9..2c4c3f965 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15438,10 +15438,11 @@
       "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g=="
     },
     "node_modules/undici": {
-      "version": "6.20.1",
-      "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz",
-      "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==",
+      "version": "6.21.1",
+      "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz",
+      "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">=18.17"
       }
@@ -15614,10 +15615,11 @@
       "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
     },
     "node_modules/vite": {
-      "version": "5.4.10",
-      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz",
-      "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==",
+      "version": "5.4.14",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz",
+      "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "esbuild": "^0.21.3",
         "postcss": "^8.4.43",


Test patch:
diff --git a/test/filters-cases/bug-7280.asm b/test/filters-cases/bug-7280.asm
new file mode 100644
index 000000000..f6e5260cc
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm
@@ -0,0 +1,17 @@
+        .arch armv8-a
+        .file   "example.cpp"
+        .text
+        .global a
+        .section        .rodata
+        .align  3
+.LC0:
+        .string "a"
+        .base64 "AGIA"
+        .data
+        .align  3
+        .type   a, %object
+        .size   a, 8
+a:
+        .xword  .LC0
+        .ident  "GCC: (GNU) 15.0.1 20250115 (experimental)"
+        .section        .note.GNU-stack,"",@progbits
diff --git a/test/filters-cases/bug-7280.asm.binary.directives.labels.comments.json b/test/filters-cases/bug-7280.asm.binary.directives.labels.comments.json
new file mode 100644
index 000000000..720205208
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.binary.directives.labels.comments.json
@@ -0,0 +1,4 @@
+{
+  "asm": [],
+  "labelDefinitions": {}
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-7280.asm.directives.comments.json b/test/filters-cases/bug-7280.asm.directives.comments.json
new file mode 100644
index 000000000..805e10c8f
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.directives.comments.json
@@ -0,0 +1,49 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 1,
+    "a": 4
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-7280.asm.directives.json b/test/filters-cases/bug-7280.asm.directives.json
new file mode 100644
index 000000000..805e10c8f
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.directives.json
@@ -0,0 +1,49 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 1,
+    "a": 4
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-7280.asm.directives.labels.comments.json b/test/filters-cases/bug-7280.asm.directives.labels.comments.json
new file mode 100644
index 000000000..805e10c8f
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.directives.labels.comments.json
@@ -0,0 +1,49 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 1,
+    "a": 4
+  }
+}
\ No newline at end of file
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
new file mode 100644
index 000000000..805e10c8f
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.directives.labels.comments.library.dontMaskFilenames.json
@@ -0,0 +1,49 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 1,
+    "a": 4
+  }
+}
\ No newline at end of file
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
new file mode 100644
index 000000000..805e10c8f
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.directives.labels.comments.library.json
@@ -0,0 +1,49 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 1,
+    "a": 4
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-7280.asm.directives.labels.json b/test/filters-cases/bug-7280.asm.directives.labels.json
new file mode 100644
index 000000000..805e10c8f
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.directives.labels.json
@@ -0,0 +1,49 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 1,
+    "a": 4
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-7280.asm.directives.library.json b/test/filters-cases/bug-7280.asm.directives.library.json
new file mode 100644
index 000000000..805e10c8f
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.directives.library.json
@@ -0,0 +1,49 @@
+{
+  "asm": [
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 1,
+    "a": 4
+  }
+}
\ No newline at end of file
diff --git a/test/filters-cases/bug-7280.asm.none.json b/test/filters-cases/bug-7280.asm.none.json
new file mode 100644
index 000000000..d3d3c00b6
--- /dev/null
+++ b/test/filters-cases/bug-7280.asm.none.json
@@ -0,0 +1,141 @@
+{
+  "asm": [
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 22,
+            "startCol": 21
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .arch armv8-a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .file   \"example.cpp\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .text"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 18,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .global a"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .section        .rodata"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .align  3"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": ".LC0:"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 19,
+            "startCol": 18
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .string \"a\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .base64 \"AGIA\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .data"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .align  3"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 18,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .type   a, %object"
+    },
+    {
+      "labels": [
+        {
+          "name": "a",
+          "range": {
+            "endCol": 18,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .size   a, 8"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "a:"
+    },
+    {
+      "labels": [
+        {
+          "name": ".LC0",
+          "range": {
+            "endCol": 21,
+            "startCol": 17
+          }
+        }
+      ],
+      "source": null,
+      "text": "        .xword  .LC0"
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .ident  \"GCC: (GNU) 15.0.1 20250115 (experimental)\""
+    },
+    {
+      "labels": [],
+      "source": null,
+      "text": "        .section        .note.GNU-stack,\"\",@progbits"
+    }
+  ],
+  "labelDefinitions": {
+    ".LC0": 7,
+    "a": 14
+  }
+}
\ No newline at end of file