Repository: compiler-explorer/compiler-explorer
Pull request #6682 (2024-07-03 14:37:30)

Pass instructionSet, -mcpu, -march and -mtriple through to llvm-mca
Currently if an MCA instance is constructed on a compiler, MCA runs with
the default target for the host it is running on.

Make it respect the target architecture by passing an -mtarget to MCA
conditioned on the detected instructionSet of the compiler.

Additionally, pass through any -mcpu, -march or -mtriple specified to
the compiler.

<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE IT
Thanks for taking the time to improve CE. We really appreciate it.
  Before opening the PR, please make sure that the tests & linter pass their checks,
  by running `make check`.
  In the best case scenario, you are also adding tests to back up your changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->



Patch:
diff --git a/app.ts b/app.ts
index 92ba44195..a7837100c 100755
--- a/app.ts
+++ b/app.ts
@@ -538,10 +538,16 @@ async function main() {
     if (opts.prediscovered) {
         const prediscoveredCompilersJson = await fs.readFile(opts.prediscovered, 'utf8');
         initialCompilers = JSON.parse(prediscoveredCompilersJson);
-        await compilerFinder.loadPrediscovered(initialCompilers);
+        const prediscResult = await compilerFinder.loadPrediscovered(initialCompilers);
+        if (prediscResult.length === 0) {
+            throw new Error('Unexpected failure, no compilers found!');
+        }
     } else {
         const initialFindResults = await compilerFinder.find();
         initialCompilers = initialFindResults.compilers;
+        if (initialCompilers.length === 0) {
+            throw new Error('Unexpected failure, no compilers found!');
+        }
         if (defArgs.ensureNoCompilerClash) {
             logger.warn('Ensuring no compiler ids clash');
             if (initialFindResults.foundClash) {
@@ -642,7 +648,10 @@ async function main() {
             }),
         )
         // Handle healthchecks at the root, as they're not expected from the outside world
-        .use('/healthcheck', new healthCheck.HealthCheckHandler(compilationQueue, healthCheckFilePath).handle)
+        .use(
+            '/healthcheck',
+            new healthCheck.HealthCheckHandler(compilationQueue, healthCheckFilePath, compileHandler).handle,
+        )
         .use(httpRoot, router)
         .use((req, res, next) => {
             next({status: 404, message: `page "${req.path}" could not be found`});
diff --git a/etc/config/c++.amazon.properties b/etc/config/c++.amazon.properties
index 681bc8840..4f21450c4 100644
--- a/etc/config/c++.amazon.properties
+++ b/etc/config/c++.amazon.properties
@@ -415,7 +415,7 @@ compiler.clang1810.options=--gcc-toolchain=/opt/compiler-explorer/gcc-13.2.0
 compiler.clang1810.ldPath=${exePath}/../lib|${exePath}/../lib/x86_64-unknown-linux-gnu
 compiler.clang1810.debugPatched=true
 
-group.clangx86trunk.compilers=clang_trunk:clang_assertions_trunk:clang_concepts:clang_p1144:clang_autonsdmi:clang_bb_p2996:clang_p3068:clang_lifetime:clang_p1061:clang_parmexpr:clang_patmat:clang_embed:clang_dang:clang_reflection:clang_variadic_friends:clang_widberg:clang_resugar:clang_clangir:clang_dascandy_contracts:clang_p1974
+group.clangx86trunk.compilers=clang_trunk:clang_assertions_trunk:clang_concepts:clang_p1144:clang_autonsdmi:clang_bb_p2996:clang_p3068:clang_p3309:clang_lifetime:clang_p1061:clang_parmexpr:clang_patmat:clang_embed:clang_dang:clang_reflection:clang_variadic_friends:clang_widberg:clang_resugar:clang_clangir:clang_dascandy_contracts:clang_p1974
 group.clangx86trunk.intelAsm=-mllvm --x86-asm-syntax=intel
 group.clangx86trunk.options=--gcc-toolchain=/opt/compiler-explorer/gcc-snapshot
 group.clangx86trunk.objdumper=/opt/compiler-explorer/gcc-snapshot/bin/objdump
@@ -460,7 +460,10 @@ compiler.clang_bb_p2996.notification=Experimental Reflection Support; see <a hre
 compiler.clang_bb_p2996.options=-std=c++26 -freflection -stdlib=libc++
 compiler.clang_p3068.exe=/opt/compiler-explorer/clang-p3068-trunk/bin/clang++
 compiler.clang_p3068.semver=(experimental P3068)
-compiler.clang_p3068.notification=Experimental constexpr Exception Support; see <a href="https://github.com/hanickadot/llvm-project/tree/P3068-constexpr-exceptions" target="_blank" rel="noopener noreferrer">P2996<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens in a new window"></small></sup></a>
+compiler.clang_p3068.notification=Experimental constexpr Exception Support; see <a href="https://github.com/hanickadot/llvm-project/tree/P3068-constexpr-exceptions" target="_blank" rel="noopener noreferrer">P3068<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens in a new window"></small></sup></a>
+compiler.clang_p3309.exe=/opt/compiler-explorer/clang-p3309-trunk/bin/clang++
+compiler.clang_p3309.semver=(experimental P3309)
+compiler.clang_p3309.notification=Experimental constexpr atomic and atomic_ref; see <a href="https://github.com/hanickadot/llvm-project/tree/P3309-constexpr-atomic-and-atomic-ref" target="_blank" rel="noopener noreferrer">P3309<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens in a new window"></small></sup></a>
 compiler.clang_p1061.exe=/opt/compiler-explorer/clang-p1061-trunk/bin/clang++
 compiler.clang_p1061.semver=(experimental P1061)
 compiler.clang_p1061.notification=Experimental Structure Bindings can introduce a Pack; see <a href="https://wg21.link/P1061" target="_blank" rel="noopener noreferrer">P1061<sup><small class="fas fa-external-link-alt opens-new-window" title="Opens in a new window"></small></sup></a>
@@ -4133,7 +4136,7 @@ libs.flux.versions.trunk.path=/opt/compiler-explorer/libs/flux/trunk/include
 
 libs.fmt.name={fmt}
 libs.fmt.description=A modern formatting library
-libs.fmt.versions=trunk:400:410:500:510:520:530:600:610:611:612:620:621:700:713:801:811:900:910:1000:1011:1021
+libs.fmt.versions=trunk:400:410:500:510:520:530:600:610:611:612:620:621:700:713:801:811:900:910:1000:1011:1021:1100
 libs.fmt.url=https://fmt.dev/
 libs.fmt.staticliblink=fmtd
 libs.fmt.examples=Tevcjh:oK8h33:Yn7Txe:Yn7Txe:K8s4Mc:MjsY7c
@@ -4183,6 +4186,8 @@ libs.fmt.versions.1011.version=10.1.1
 libs.fmt.versions.1011.path=/opt/compiler-explorer/libs/fmt/10.1.1/include
 libs.fmt.versions.1021.version=10.2.1
 libs.fmt.versions.1021.path=/opt/compiler-explorer/libs/fmt/10.2.1/include
+libs.fmt.versions.1100.version=11.0.0
+libs.fmt.versions.1100.path=/opt/compiler-explorer/libs/fmt/11.0.0/include
 
 libs.gcem.name=GCEM
 libs.gcem.description=Generalized Constant Expression Math: a C++ compile-time math library using generalized constant expressions
@@ -4589,12 +4594,12 @@ libs.mlir.versions.1405.version=14.0.5
 libs.mlir.versions.1405.path=/opt/compiler-explorer/libs/mlir/14.0.5/include
 
 libs.mp-units.name=mp-units
-libs.mp-units.versions=trunk:031:040:050:060:070:080:200:210
+libs.mp-units.versions=trunk:031:040:050:060:070:080:200:210:220
 libs.mp-units.url=https://github.com/mpusz/mp-units
 libs.mp-units.description=A quantities and units library for C++<br /><br />Note that in some cases, you also need to add the {fmt} library.
 libs.mp-units.examples=81Ev7qhTd:Tsesa1Pvq
 libs.mp-units.versions.trunk.version=trunk
-libs.mp-units.versions.trunk.path=/opt/compiler-explorer/libs/mp-units/trunk/src/core/include:/opt/compiler-explorer/libs/mp-units/trunk/src/systems/include:/opt/compiler-explorer/libs/fmt/10.2.1/include:/opt/compiler-explorer/libs/gsl-lite/include
+libs.mp-units.versions.trunk.path=/opt/compiler-explorer/libs/mp-units/trunk/src/core/include:/opt/compiler-explorer/libs/mp-units/trunk/src/systems/include:/opt/compiler-explorer/libs/fmt/11.0.0/include:/opt/compiler-explorer/libs/gsl-lite/include
 libs.mp-units.versions.031.version=0.3.1
 libs.mp-units.versions.031.path=/opt/compiler-explorer/libs/mp-units/v0.3.1/src/include:/opt/compiler-explorer/libs/rangesv3/0.9.1/include
 libs.mp-units.versions.040.version=0.4.0
@@ -4611,6 +4616,8 @@ libs.mp-units.versions.200.version=2.0.0
 libs.mp-units.versions.200.path=/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core-fmt/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core-io/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/angular/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/cgs/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/hep/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/iau/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/iec80000/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/imperial/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/international/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/isq/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/isq_angle/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/natural/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/si/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/typographic/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/usc/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/utility/include:/opt/compiler-explorer/libs/fmt/10.1.1/include:/opt/compiler-explorer/libs/gsl-lite/include
 libs.mp-units.versions.210.version=2.1.0
 libs.mp-units.versions.210.path=/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core-fmt/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core-io/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/angular/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/cgs/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/hep/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/iau/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/iec80000/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/imperial/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/international/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/isq/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/isq_angle/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/natural/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/si/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/typographic/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/usc/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/utility/include:/opt/compiler-explorer/libs/fmt/10.1.1/include:/opt/compiler-explorer/libs/gsl-lite/include
+libs.mp-units.versions.220.version=2.2.0
+libs.mp-units.versions.220.path=/opt/compiler-explorer/libs/mp-units/v2.2.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.2.0/src/systems/include:/opt/compiler-explorer/libs/fmt/10.2.1/include:/opt/compiler-explorer/libs/gsl-lite/include
 
 libs.mp-coro.name=mp-coro
 libs.mp-coro.versions=trunk
diff --git a/etc/config/c.amazon.properties b/etc/config/c.amazon.properties
index fa9c29e98..0f2dc9195 100644
--- a/etc/config/c.amazon.properties
+++ b/etc/config/c.amazon.properties
@@ -2988,7 +2988,7 @@ compiler.cc65_219.options=-I/opt/compiler-explorer/6502/cc65-2.19/share/cc65/inc
 
 #################################
 # sdcc compilers
-group.sdcc.compilers=sdcc400:sdcc410:sdcc420:sdcc430
+group.sdcc.compilers=sdcc400:sdcc410:sdcc420:sdcc430:sdcc440
 group.sdcc.compilerType=sdcc
 group.sdcc.groupName=SDCC
 group.sdcc.baseName=SDCC
@@ -3005,6 +3005,8 @@ compiler.sdcc420.exe=/opt/compiler-explorer/sdcc-4.2.0/bin/sdcc
 compiler.sdcc420.semver=4.2.0
 compiler.sdcc430.exe=/opt/compiler-explorer/sdcc-4.3.0/bin/sdcc
 compiler.sdcc430.semver=4.3.0
+compiler.sdcc440.exe=/opt/compiler-explorer/sdcc-4.4.0/bin/sdcc
+compiler.sdcc440.semver=4.4.0
 
 #################################
 # z88dk
diff --git a/etc/config/circle.amazon.properties b/etc/config/circle.amazon.properties
index 025cd8ad2..788de9b57 100644
--- a/etc/config/circle.amazon.properties
+++ b/etc/config/circle.amazon.properties
@@ -478,7 +478,7 @@ libs.flux.versions.trunk.path=/opt/compiler-explorer/libs/flux/trunk/include
 
 libs.fmt.name={fmt}
 libs.fmt.description=A modern formatting library
-libs.fmt.versions=trunk:400:410:500:510:520:530:600:610:611:612:620:621:700:713:801:811:900:910:1000:1011:1021
+libs.fmt.versions=trunk:400:410:500:510:520:530:600:610:611:612:620:621:700:713:801:811:900:910:1000:1011:1021:1100
 libs.fmt.url=https://fmt.dev/
 libs.fmt.staticliblink=fmtd
 libs.fmt.examples=Tevcjh:oK8h33:Yn7Txe:Yn7Txe:K8s4Mc:MjsY7c
@@ -528,6 +528,8 @@ libs.fmt.versions.1011.version=10.1.1
 libs.fmt.versions.1011.path=/opt/compiler-explorer/libs/fmt/10.1.1/include
 libs.fmt.versions.1021.version=10.2.1
 libs.fmt.versions.1021.path=/opt/compiler-explorer/libs/fmt/10.2.1/include
+libs.fmt.versions.1100.version=11.0.0
+libs.fmt.versions.1100.path=/opt/compiler-explorer/libs/fmt/11.0.0/include
 
 libs.glm.name=GLM
 libs.glm.description=OpenGL Mathematics
@@ -758,12 +760,12 @@ libs.lua.versions.540.path=/opt/compiler-explorer/libs/lua/v5.4.0/include
 libs.lua.versions.540.libpath=/opt/compiler-explorer/libs/lua/v5.4.0/lib/x86_64:/opt/compiler-explorer/libs/lua/v5.4.0/lib/x86
 
 libs.mp-units.name=mp-units
-libs.mp-units.versions=trunk:031:040:050:060:070:080:200:210
+libs.mp-units.versions=trunk:031:040:050:060:070:080:200:210:220
 libs.mp-units.url=https://github.com/mpusz/mp-units
 libs.mp-units.description=A quantities and units library for C++<br /><br />Note that in some cases, you also need to add the {fmt} library.
 libs.mp-units.examples=81Ev7qhTd:Tsesa1Pvq
 libs.mp-units.versions.trunk.version=trunk
-libs.mp-units.versions.trunk.path=/opt/compiler-explorer/libs/mp-units/trunk/src/core/include:/opt/compiler-explorer/libs/mp-units/trunk/src/systems/include:/opt/compiler-explorer/libs/fmt/10.2.1/include:/opt/compiler-explorer/libs/gsl-lite/include
+libs.mp-units.versions.trunk.path=/opt/compiler-explorer/libs/mp-units/trunk/src/core/include:/opt/compiler-explorer/libs/mp-units/trunk/src/systems/include:/opt/compiler-explorer/libs/fmt/11.0.0/include:/opt/compiler-explorer/libs/gsl-lite/include
 libs.mp-units.versions.031.version=0.3.1
 libs.mp-units.versions.031.path=/opt/compiler-explorer/libs/mp-units/v0.3.1/src/include:/opt/compiler-explorer/libs/rangesv3/0.9.1/include
 libs.mp-units.versions.040.version=0.4.0
@@ -780,6 +782,8 @@ libs.mp-units.versions.200.version=2.0.0
 libs.mp-units.versions.200.path=/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core-fmt/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core-io/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/angular/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/cgs/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/hep/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/iau/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/iec80000/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/imperial/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/international/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/isq/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/isq_angle/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/natural/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/si/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/typographic/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/usc/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/utility/include:/opt/compiler-explorer/libs/fmt/10.1.1/include:/opt/compiler-explorer/libs/gsl-lite/include
 libs.mp-units.versions.210.version=2.1.0
 libs.mp-units.versions.210.path=/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core-fmt/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core-io/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/angular/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/cgs/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/hep/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/iau/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/iec80000/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/imperial/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/international/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/isq/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/isq_angle/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/natural/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/si/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/typographic/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/usc/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/utility/include:/opt/compiler-explorer/libs/fmt/10.1.1/include:/opt/compiler-explorer/libs/gsl-lite/include
+libs.mp-units.versions.220.version=2.2.0
+libs.mp-units.versions.220.path=/opt/compiler-explorer/libs/mp-units/v2.2.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.2.0/src/systems/include:/opt/compiler-explorer/libs/fmt/10.2.1/include:/opt/compiler-explorer/libs/gsl-lite/include
 
 libs.mp-coro.name=mp-coro
 libs.mp-coro.versions=trunk
diff --git a/etc/config/cuda.amazon.properties b/etc/config/cuda.amazon.properties
index f2338ab7e..60fb26f0e 100644
--- a/etc/config/cuda.amazon.properties
+++ b/etc/config/cuda.amazon.properties
@@ -337,19 +337,19 @@ compiler.hipclang-rocm-60102.semver=6.1.2
 compiler.hipclang-rocm-60102.name=clang rocm-6.1.2
 compiler.hipclang-rocm-60102.nvdisasm=/opt/compiler-explorer/clang-rocm-6.1.2/bin/llvm-objdump
 compiler.hipclang-rocm-60102.objdumper=/opt/compiler-explorer/clang-rocm-6.1.2/bin/llvm-objdump
-compiler.hipclang-rocm-60102.options=-x hip --cuda-device-only -O3 -D__HIP_PLATFORM_AMD__=1 -D__HIP_PLATFORM_HCC__=1 -isystem /opt/compiler-explorer/libs/rocm/6.1.2/include --rocm-path=/opt/compiler-explorer/libs/rocm/6.1.2 --rocm-device-lib-path=/opt/compiler-explorer/clang-rocm-6.1.2/amdgcn/bitcode -include hip/hip_runtime.h
+compiler.hipclang-rocm-60102.options=-x hip --cuda-device-only -O3 -D__HIP_PLATFORM_AMD__=1 -D__HIP_PLATFORM_HCC__=1 -isystem /opt/compiler-explorer/libs/rocm/6.1.2/include --rocm-path=/opt/compiler-explorer/libs/rocm/6.1.2 -include hip/hip_runtime.h
 compiler.hipclang-trunk-rocm-60102.exe=/opt/compiler-explorer/clang-assertions-trunk/bin/clang++
 compiler.hipclang-trunk-rocm-60102.semver=trunk-6.1.2
 compiler.hipclang-trunk-rocm-60102.name=clang trunk rocm-6.1.2
 compiler.hipclang-trunk-rocm-60102.nvdisasm=/opt/compiler-explorer/clang-assertions-trunk/bin/llvm-objdump
 compiler.hipclang-trunk-rocm-60102.objdumper=/opt/compiler-explorer/clang-assertions-trunk/bin/llvm-objdump
-compiler.hipclang-trunk-rocm-60102.options=-x hip --cuda-device-only -O3 -D__HIP_PLATFORM_AMD__=1 -D__HIP_PLATFORM_HCC__=1 -isystem /opt/compiler-explorer/libs/rocm/6.1.2/include --rocm-path=/opt/compiler-explorer/libs/rocm/6.1.2 --rocm-device-lib-path=/opt/compiler-explorer/clang-rocm-6.1.2/amdgcn/bitcode -include hip/hip_runtime.h
+compiler.hipclang-trunk-rocm-60102.options=-x hip --cuda-device-only -O3 -D__HIP_PLATFORM_AMD__=1 -D__HIP_PLATFORM_HCC__=1 -isystem /opt/compiler-explorer/libs/rocm/6.1.2/include --rocm-path=/opt/compiler-explorer/libs/rocm/6.1.2 -include hip/hip_runtime.h
 compiler.hipclang-staging-rocm-60102.exe=/opt/compiler-explorer/clang-rocm-trunk/bin/clang++
 compiler.hipclang-staging-rocm-60102.semver=staging-6.1.2
 compiler.hipclang-staging-rocm-60102.name=clang staging rocm-6.1.2
 compiler.hipclang-staging-rocm-60102.nvdisasm=/opt/compiler-explorer/clang-rocm-trunk/bin/llvm-objdump
 compiler.hipclang-staging-rocm-60102.objdumper=/opt/compiler-explorer/clang-rocm-trunk/bin/llvm-objdump
-compiler.hipclang-staging-rocm-60102.options=-x hip --cuda-device-only -O3 -D__HIP_PLATFORM_AMD__=1 -D__HIP_PLATFORM_HCC__=1 -isystem /opt/compiler-explorer/libs/rocm/6.1.2/include --rocm-path=/opt/compiler-explorer/libs/rocm/6.1.2 --rocm-device-lib-path=/opt/compiler-explorer/clang-rocm-6.1.2/amdgcn/bitcode -include hip/hip_runtime.h
+compiler.hipclang-staging-rocm-60102.options=-x hip --cuda-device-only -O3 -D__HIP_PLATFORM_AMD__=1 -D__HIP_PLATFORM_HCC__=1 -isystem /opt/compiler-explorer/libs/rocm/6.1.2/include --rocm-path=/opt/compiler-explorer/libs/rocm/6.1.2 -include hip/hip_runtime.h
 
 group.nvrtc.compilers=nvrtc121:nvrtc120u1:nvrtc120:nvrtc118:nvrtc117u1:nvrtc117:nvrtc116u2:nvrtc116u1:nvrtc116:nvrtc115u2:nvrtc115u1:nvrtc115:nvrtc114u1:nvrtc114:nvrtc113u1:nvrtc113:nvrtc112u2:nvrtc112u1:nvrtc112:nvrtc111u1:nvrtc111:nvrtc11u1:nvrtc11:nvrtc102:nvrtc101u2:nvrtc101u1:nvrtc101:nvrtc100:nvrtc92:nvrtc91
 group.nvrtc.compilerType=nvrtc
diff --git a/etc/config/d.amazon.properties b/etc/config/d.amazon.properties
index 9fd050866..d43c39a8e 100644
--- a/etc/config/d.amazon.properties
+++ b/etc/config/d.amazon.properties
@@ -1,12 +1,12 @@
 compilers=&gdc:&ldc:&dmd:&gdccross
-defaultCompiler=ldc1_38
+defaultCompiler=ldc1_39
 
 group.gdc.compilers=gdc48:gdc49:gdc52:gdc92:gdc93:gdc95:gdc101:gdc102:gdc105:gdc111:gdc113:gdc114:gdc121:gdc122:gdc123:gdc124:gdc131:gdc132:gdc133:gdc141:gdctrunk
 group.gdc.groupName=GDC x86-64
 group.gdc.includeFlag=-isystem
 group.gdc.isSemVer=true
 group.gdc.baseName=gdc
-group.gdc.demangler=/opt/compiler-explorer/ldc1.36.0/ldc2-1.36.0-linux-x86_64/bin/ddemangle
+group.gdc.demangler=/opt/compiler-explorer/ldc1.39.0/ldc2-1.39.0-linux-x86_64/bin/ddemangle
 group.gdc.objdumper=/opt/compiler-explorer/gcc-12.2.0/bin/objdump
 group.gdc.llvmSymbolizer=/opt/compiler-explorer/clang-17.0.1/bin/llvm-symbolizer
 
@@ -590,11 +590,11 @@ compiler.gdcmipsel1410.semver=14.1.0
 compiler.gdcmipsel1410.objdumper=/opt/compiler-explorer/mipsel/gcc-14.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-linux-gnu-objdump
 compiler.gdcmipsel1410.demangler=/opt/compiler-explorer/mipsel/gcc-14.1.0/mipsel-multilib-linux-gnu/bin/mipsel-multilib-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:ldcbeta:ldclatestci
+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:ldcbeta:ldclatestci
 group.ldc.compilerType=ldc
 group.ldc.isSemVer=true
 group.ldc.baseName=ldc
-group.ldc.demangler=/opt/compiler-explorer/ldc1.36.0/ldc2-1.36.0-linux-x86_64/bin/ddemangle
+group.ldc.demangler=/opt/compiler-explorer/ldc1.39.0/ldc2-1.39.0-linux-x86_64/bin/ddemangle
 group.ldc.objdumper=/opt/compiler-explorer/gcc-12.1.0/bin/objdump
 group.ldc.llvmSymbolizer=/opt/compiler-explorer/clang-17.0.1/bin/llvm-symbolizer
 
@@ -698,6 +698,9 @@ compiler.ldc1_37.options=-gcc=gcc
 compiler.ldc1_38.exe=/opt/compiler-explorer/ldc1.38.0/ldc2-1.38.0-linux-x86_64/bin/ldc2
 compiler.ldc1_38.semver=1.38.0
 compiler.ldc1_38.options=-gcc=gcc
+compiler.ldc1_39.exe=/opt/compiler-explorer/ldc1.39.0/ldc2-1.39.0-linux-x86_64/bin/ldc2
+compiler.ldc1_39.semver=1.39.0
+compiler.ldc1_39.options=-gcc=gcc
 compiler.ldcbeta.exe=/opt/compiler-explorer/ldcbeta/bin/ldc2
 compiler.ldcbeta.semver=beta
 compiler.ldcbeta.options=-gcc=gcc
diff --git a/etc/config/objc++.amazon.properties b/etc/config/objc++.amazon.properties
index faf623703..303a8befd 100644
--- a/etc/config/objc++.amazon.properties
+++ b/etc/config/objc++.amazon.properties
@@ -1067,7 +1067,7 @@ libs.flux.versions.trunk.path=/opt/compiler-explorer/libs/flux/trunk/include
 
 libs.fmt.name={fmt}
 libs.fmt.description=A modern formatting library
-libs.fmt.versions=trunk:400:410:500:510:520:530:600:610:611:612:620:621:700:713:801:811:900:910:1000:1011:1021
+libs.fmt.versions=trunk:400:410:500:510:520:530:600:610:611:612:620:621:700:713:801:811:900:910:1000:1011:1021:1100
 libs.fmt.url=https://fmt.dev/
 libs.fmt.staticliblink=fmtd
 libs.fmt.examples=Tevcjh:oK8h33:Yn7Txe:Yn7Txe:K8s4Mc:MjsY7c
@@ -1117,6 +1117,8 @@ libs.fmt.versions.1011.version=10.1.1
 libs.fmt.versions.1011.path=/opt/compiler-explorer/libs/fmt/10.1.1/include
 libs.fmt.versions.1021.version=10.2.1
 libs.fmt.versions.1021.path=/opt/compiler-explorer/libs/fmt/10.2.1/include
+libs.fmt.versions.1100.version=11.0.0
+libs.fmt.versions.1100.path=/opt/compiler-explorer/libs/fmt/11.0.0/include
 
 libs.gemmlowp.name=gemmlowp
 libs.gemmlowp.url=https://github.com/google/gemmlowp
@@ -1453,12 +1455,12 @@ libs.mlir.versions.1405.version=14.0.5
 libs.mlir.versions.1405.path=/opt/compiler-explorer/libs/mlir/14.0.5/include
 
 libs.mp-units.name=mp-units
-libs.mp-units.versions=trunk:031:040:050:060:070:080:200:210
+libs.mp-units.versions=trunk:031:040:050:060:070:080:200:210:220
 libs.mp-units.url=https://github.com/mpusz/mp-units
 libs.mp-units.description=A quantities and units library for C++<br /><br />Note that in some cases, you also need to add the {fmt} library.
 libs.mp-units.examples=81Ev7qhTd:Tsesa1Pvq
 libs.mp-units.versions.trunk.version=trunk
-libs.mp-units.versions.trunk.path=/opt/compiler-explorer/libs/mp-units/trunk/src/core/include:/opt/compiler-explorer/libs/mp-units/trunk/src/systems/include:/opt/compiler-explorer/libs/fmt/10.2.1/include:/opt/compiler-explorer/libs/gsl-lite/include
+libs.mp-units.versions.trunk.path=/opt/compiler-explorer/libs/mp-units/trunk/src/core/include:/opt/compiler-explorer/libs/mp-units/trunk/src/systems/include:/opt/compiler-explorer/libs/fmt/11.0.0/include:/opt/compiler-explorer/libs/gsl-lite/include
 libs.mp-units.versions.031.version=0.3.1
 libs.mp-units.versions.031.path=/opt/compiler-explorer/libs/mp-units/v0.3.1/src/include:/opt/compiler-explorer/libs/rangesv3/0.9.1/include
 libs.mp-units.versions.040.version=0.4.0
@@ -1475,6 +1477,8 @@ libs.mp-units.versions.200.version=2.0.0
 libs.mp-units.versions.200.path=/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core-fmt/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/core-io/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/angular/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/cgs/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/hep/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/iau/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/iec80000/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/imperial/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/international/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/isq/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/isq_angle/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/natural/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/si/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/typographic/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/systems/usc/include:/opt/compiler-explorer/libs/mp-units/v2.0.0/src/utility/include:/opt/compiler-explorer/libs/fmt/10.1.1/include:/opt/compiler-explorer/libs/gsl-lite/include
 libs.mp-units.versions.210.version=2.1.0
 libs.mp-units.versions.210.path=/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core-fmt/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/core-io/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/angular/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/cgs/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/hep/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/iau/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/iec80000/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/imperial/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/international/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/isq/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/isq_angle/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/natural/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/si/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/typographic/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/systems/usc/include:/opt/compiler-explorer/libs/mp-units/v2.1.0/src/utility/include:/opt/compiler-explorer/libs/fmt/10.1.1/include:/opt/compiler-explorer/libs/gsl-lite/include
+libs.mp-units.versions.220.version=2.2.0
+libs.mp-units.versions.220.path=/opt/compiler-explorer/libs/mp-units/v2.2.0/src/core/include:/opt/compiler-explorer/libs/mp-units/v2.2.0/src/systems/include:/opt/compiler-explorer/libs/fmt/10.2.1/include:/opt/compiler-explorer/libs/gsl-lite/include
 
 libs.mp-coro.name=mp-coro
 libs.mp-coro.versions=trunk
diff --git a/etc/config/sponsors.yaml b/etc/config/sponsors.yaml
index 218566143..a00386fd4 100644
--- a/etc/config/sponsors.yaml
+++ b/etc/config/sponsors.yaml
@@ -36,6 +36,15 @@ levels:
         displayType: SideBySide
         statsId: thinkcell
         bgColour: rgb(110, 166, 0)
+      - name: CLion
+        description: CLion, the cross-platform IDE for C and C++, is robust, responsive, and loaded with new functionality to help you make your development experience smoother and more productive.
+        icon: https://static.ce-cdn.net/jetbrains/Jetbrains.png
+        icon_dark: https://static.ce-cdn.net/jetbrains/JetbrainsWhite.png
+        img: https://static.ce-cdn.net/jetbrains/ClionWhite.png
+        url: https://jb.gg/clion_ce
+        topIconShowEvery: 3
+        displayType: SideBySide
+        statsId: jetbrains
   - name: Patreon Legends
     description: 'These amazing people have pledged at the highest level of support. Huge thanks to these fine folks:'
     class: legendary
@@ -462,3 +471,5 @@ levels:
       - Pieter van Schendel
       - LukeHjo
       - oldspiderdude
+      - Harish Naik
+      - Gabriel Ravier
diff --git a/examples/circt/default.mlir b/examples/circt/default.mlir
index a3c4e54ba..0c864187d 100644
--- a/examples/circt/default.mlir
+++ b/examples/circt/default.mlir
@@ -2,10 +2,10 @@
 // CIRCT example code may not always work out of the box because the textual MLIR format is not always stable.
 // The example tries to be compatible with the latest CIRCT version, using relatively stable IR.
 
-hw.module @Counter(%clock: i1, %reset: i1) -> (count: i8) {
+hw.module @Counter(in %clock: !seq.clock, in %reset: i1, out count: i8) {
   %c0_i8 = hw.constant 0 : i8
   %c1_i8 = hw.constant 1 : i8
-  %counter = seq.compreg %0, %clock, %reset, %c0_i8  : i8
+  %counter = seq.compreg %0, %clock reset %reset, %c0_i8  : i8
   %0 = comb.add %counter, %c1_i8 : i8
   hw.output %counter : i8
 }
diff --git a/lib/handlers/compile.interfaces.ts b/lib/handlers/compile.interfaces.ts
index 464f0c647..ec214dcab 100644
--- a/lib/handlers/compile.interfaces.ts
+++ b/lib/handlers/compile.interfaces.ts
@@ -62,3 +62,7 @@ export type CompileRequestTextBody = {
     skipAsm: string;
     filterAnsi?: string;
 };
+
+export interface ICompileHandler {
+    hasLanguages(): boolean;
+}
diff --git a/lib/handlers/compile.ts b/lib/handlers/compile.ts
index 0efda1b7f..445d24203 100644
--- a/lib/handlers/compile.ts
+++ b/lib/handlers/compile.ts
@@ -41,7 +41,7 @@ import {
     FiledataPair,
 } from '../../types/compilation/compilation.interfaces.js';
 import {CompilerOverrideOptions} from '../../types/compilation/compiler-overrides.interfaces.js';
-import {ICompiler, PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
+import {CompilerInfo, ICompiler, PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
 import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
 import {ResultLine} from '../../types/resultline/resultline.interfaces.js';
 import {BaseCompiler} from '../base-compiler.js';
@@ -54,7 +54,12 @@ import {SentryCapture} from '../sentry.js';
 import {KnownBuildMethod} from '../stats.js';
 import * as utils from '../utils.js';
 
-import {CompileRequestJsonBody, CompileRequestQueryArgs, CompileRequestTextBody} from './compile.interfaces.js';
+import {
+    CompileRequestJsonBody,
+    CompileRequestQueryArgs,
+    CompileRequestTextBody,
+    ICompileHandler,
+} from './compile.interfaces.js';
 
 temp.track();
 
@@ -97,7 +102,7 @@ export type ParsedRequest = {
     libraries: CompileChildLibraries[];
 };
 
-export class CompileHandler {
+export class CompileHandler implements ICompileHandler {
     private compilersById: Record<string, Record<string, BaseCompiler>> = {};
     private readonly compilerEnv: CompilationEnvironment;
     private readonly textBanner: string;
@@ -200,6 +205,14 @@ export class CompileHandler {
         });
     }
 
+    hasLanguages(): boolean {
+        try {
+            return Object.keys(this.compilersById).length > 0;
+        } catch {
+            return false;
+        }
+    }
+
     async create(compiler: PreliminaryCompilerInfo): Promise<ICompiler | null> {
         const isPrediscovered = !!compiler.version;
 
@@ -253,7 +266,10 @@ export class CompileHandler {
         }
     }
 
-    async setCompilers(compilers: PreliminaryCompilerInfo[], clientOptions: ClientOptionsType) {
+    async setCompilers(
+        compilers: PreliminaryCompilerInfo[],
+        clientOptions: ClientOptionsType,
+    ): Promise<CompilerInfo[]> {
         // Be careful not to update this.compilersById until we can replace it entirely.
         const compilersById = {};
         try {
@@ -278,6 +294,7 @@ export class CompileHandler {
             return createdCompilers.map(compiler => compiler.getInfo());
         } catch (err) {
             logger.error('Exception while processing compilers:', err);
+            return [];
         }
     }
 
diff --git a/lib/handlers/health-check.ts b/lib/handlers/health-check.ts
index eade683dc..cad3f0cba 100644
--- a/lib/handlers/health-check.ts
+++ b/lib/handlers/health-check.ts
@@ -29,12 +29,15 @@ import {CompilationQueue} from '../compilation-queue.js';
 import {logger} from '../logger.js';
 import {SentryCapture} from '../sentry.js';
 
+import {ICompileHandler} from './compile.interfaces.js';
+
 export class HealthCheckHandler {
     public readonly handle: (req: any, res: any) => Promise<void>;
 
     constructor(
         private readonly compilationQueue: CompilationQueue,
         private readonly filePath: any,
+        private readonly compileHandler: ICompileHandler,
     ) {
         this.handle = this._handle.bind(this);
     }
@@ -52,6 +55,12 @@ export class HealthCheckHandler {
          */
         await this.compilationQueue.enqueue(async () => {}, {highPriority: true});
 
+        if (!this.compileHandler.hasLanguages()) {
+            logger.error(`*** HEALTH CHECK FAILURE: no languages/compilers detected`);
+            res.status(500).end();
+            return;
+        }
+
         if (!this.filePath) {
             res.send('Everything is awesome');
             return;
diff --git a/lib/instructionsets.ts b/lib/instructionsets.ts
index c20006b14..8ae06bb79 100644
--- a/lib/instructionsets.ts
+++ b/lib/instructionsets.ts
@@ -148,8 +148,8 @@ export class InstructionSets {
                 path: [],
             },
             amd64: {
-                target: [],
-                path: [],
+                target: ['x86_64'],
+                path: ['/x86_64'],
             },
             evm: {
                 target: [],
@@ -182,6 +182,14 @@ export class InstructionSets {
         };
     }
 
+    // Return the first spelling of the target for the instruction set,
+    // or null if data is missing from the 'supported' table.
+    getInstructionSetTarget(instructionSet: InstructionSet): string | null {
+        if (!(instructionSet in this.supported)) return null;
+        if (this.supported[instructionSet].target.length === 0) return null;
+        return this.supported[instructionSet].target[0];
+    }
+
     getCompilerInstructionSetHint(compilerArch: string | boolean, exe?: string): InstructionSet {
         if (compilerArch && typeof compilerArch === 'string') {
             for (const [instructionSet, method] of Object.entries(this.supported) as [
diff --git a/lib/tooling/llvm-mca-tool.ts b/lib/tooling/llvm-mca-tool.ts
index cb34387a0..763cf7d70 100644
--- a/lib/tooling/llvm-mca-tool.ts
+++ b/lib/tooling/llvm-mca-tool.ts
@@ -24,6 +24,8 @@
 
 import fs from 'fs-extra';
 
+import {InstructionSets} from '../instructionsets.js';
+
 import {BaseTool} from './base-tool.js';
 
 export class LLVMMcaTool extends BaseTool {
@@ -44,6 +46,16 @@ export class LLVMMcaTool extends BaseTool {
     }
 
     override async runTool(compilationInfo: Record<any, any>, inputFilepath?: string, args?: string[]) {
+        const isets = new InstructionSets();
+        const target = isets.getInstructionSetTarget(compilationInfo.compiler.instructionSet);
+        if (target != null) args?.push('-mtriple=' + target);
+
+        for (const arg of compilationInfo.options) {
+            if (arg.startsWith('-mcpu') || arg.startsWith('-march') || arg.startsWith('-mtriple')) {
+                args?.push(arg);
+            }
+        }
+
         if (compilationInfo.filters.binary || compilationInfo.filters.binaryObject) {
             return this.createErrorResponse('<cannot run analysis on binary>');
         }


Test patch:
diff --git a/test/handlers/health-check-tests.ts b/test/handlers/health-check-tests.ts
index 8e9a3b0a5..da7889d51 100644
--- a/test/handlers/health-check-tests.ts
+++ b/test/handlers/health-check-tests.ts
@@ -35,9 +35,12 @@ describe('Health checks', () => {
     let compilationQueue;
 
     beforeEach(() => {
+        const compileHandlerMock = {
+            hasLanguages: () => true,
+        };
         compilationQueue = new CompilationQueue(1, 0, 0);
         app = express();
-        app.use('/hc', new HealthCheckHandler(compilationQueue, '').handle);
+        app.use('/hc', new HealthCheckHandler(compilationQueue, '', compileHandlerMock).handle);
     });
 
     it('should respond with OK', async () => {
@@ -54,15 +57,36 @@ describe('Health checks', () => {
     });
 });
 
+describe('Health checks without lang/comp', () => {
+    let app;
+    let compilationQueue;
+
+    beforeEach(() => {
+        const compileHandlerMock = {
+            hasLanguages: () => false,
+        };
+        compilationQueue = new CompilationQueue(1, 0, 0);
+        app = express();
+        app.use('/hc', new HealthCheckHandler(compilationQueue, '', compileHandlerMock).handle);
+    });
+
+    it('should respond with error', async () => {
+        await request(app).get('/hc').expect(500);
+    });
+});
+
 describe('Health checks on disk', () => {
     let app;
 
     beforeAll(() => {
+        const compileHandlerMock = {
+            hasLanguages: () => true,
+        };
         const compilationQueue = new CompilationQueue(1, 0, 0);
 
         app = express();
-        app.use('/hc', new HealthCheckHandler(compilationQueue, '/fake/.nonexist').handle);
-        app.use('/hc2', new HealthCheckHandler(compilationQueue, '/fake/.health').handle);
+        app.use('/hc', new HealthCheckHandler(compilationQueue, '/fake/.nonexist', compileHandlerMock).handle);
+        app.use('/hc2', new HealthCheckHandler(compilationQueue, '/fake/.health', compileHandlerMock).handle);
 
         mockfs({
             '/fake': {