diff --git a/src/dynarmic/frontend/decoder/decoder_detail.h b/src/dynarmic/frontend/decoder/decoder_detail.h index cf7d0e64..744e4b60 100644 --- a/src/dynarmic/frontend/decoder/decoder_detail.h +++ b/src/dynarmic/frontend/decoder/decoder_detail.h @@ -73,7 +73,11 @@ struct detail { * An argument is specified by a continuous string of the same character. */ template +#ifdef __clang__ + static constexpr auto GetArgInfo(std::array bitstring) { +#else static consteval auto GetArgInfo(std::array bitstring) { +#endif std::array masks = {}; std::array shifts = {}; size_t arg_index = 0; @@ -174,8 +178,8 @@ struct detail { constexpr auto mask = std::get<0>(GetMaskAndExpect(bitstring)); constexpr auto expect = std::get<1>(GetMaskAndExpect(bitstring)); - constexpr auto arg_masks = std::get<0>(GetArgInfo(bitstring)); - constexpr auto arg_shifts = std::get<1>(GetArgInfo(bitstring)); + const auto arg_masks = std::get<0>(GetArgInfo(bitstring)); + const auto arg_shifts = std::get<1>(GetArgInfo(bitstring)); using Iota = std::make_index_sequence;