diff --git a/docs/Deps.md b/docs/Deps.md
index b4155b07ae..10779a6c76 100644
--- a/docs/Deps.md
+++ b/docs/Deps.md
@@ -102,7 +102,7 @@ sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glsl
Ubuntu, Debian, Mint Linux
```sh
-sudo apt-get install autoconf cmake g++ gcc git glslang-tools libasound2t64 libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev libzydis-dev zydis-tools libzycore-dev vulkan-utility-libraries-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev
+sudo apt-get install autoconf cmake g++ gcc git glslang-tools libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev libzydis-dev zydis-tools libzycore-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev libboost-dev libboost-fiber-dev libbost-context-dev libsdl2-dev libopus-dev libasound2t64 vulkan-utility-libraries-dev
```
* Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required.
diff --git a/src/common/demangle.cpp b/src/common/demangle.cpp
index b2c9d126aa..e4d6541a5e 100644
--- a/src/common/demangle.cpp
+++ b/src/common/demangle.cpp
@@ -1,6 +1,8 @@
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
+#include
+#include
#include
#include "common/demangle.h"
@@ -9,29 +11,22 @@
namespace Common {
std::string DemangleSymbol(const std::string& mangled) {
- auto is_itanium = [](const std::string& name) -> bool {
- // A valid Itanium encoding requires 1-4 leading underscores, followed by 'Z'.
- auto pos = name.find_first_not_of('_');
- return pos > 0 && pos <= 4 && pos < name.size() && name[pos] == 'Z';
- };
-
- if (mangled.empty()) {
- return mangled;
- }
-
- char* demangled = nullptr;
- SCOPE_EXIT {
- std::free(demangled);
- };
-
- if (is_itanium(mangled)) {
- demangled = llvm::itaniumDemangle(mangled.c_str());
- }
-
- if (!demangled) {
- return mangled;
+ if (mangled.size() > 0) {
+ auto const is_itanium = [](std::string_view name) -> bool {
+ // A valid Itanium encoding requires 1-4 leading underscores, followed by 'Z'.
+ auto const pos = name.find_first_not_of('_');
+ return pos > 0 && pos <= 4 && pos < name.size() && name[pos] == 'Z';
+ };
+ std::string ret = mangled;
+ if (is_itanium(mangled)) {
+ if (char* p = llvm::itaniumDemangle(mangled); p != nullptr) {
+ ret = std::string{p};
+ std::free(p);
+ }
+ }
+ return ret;
}
- return demangled;
+ return std::string{};
}
} // namespace Common
diff --git a/src/dynarmic/src/dynarmic/ir/dense_list.h b/src/dynarmic/src/dynarmic/ir/dense_list.h
index 8dad418b47..aeed969650 100644
--- a/src/dynarmic/src/dynarmic/ir/dense_list.h
+++ b/src/dynarmic/src/dynarmic/ir/dense_list.h
@@ -13,10 +13,10 @@ namespace Dynarmic {
using const_pointer = const value_type*;
using reference = value_type&;
using const_reference = const value_type&;
- using iterator = std::deque::iterator;
- using const_iterator = std::deque::const_iterator;
- using reverse_iterator = std::reverse_iterator;
- using const_reverse_iterator = std::reverse_iterator;
+ using iterator = typename std::deque::iterator;
+ using const_iterator = typename std::deque::const_iterator;
+ using reverse_iterator = typename std::reverse_iterator;
+ using const_reverse_iterator = typename std::reverse_iterator;
inline bool empty() const noexcept { return list.empty(); }
inline size_type size() const noexcept { return list.size(); }
diff --git a/src/dynarmic/src/dynarmic/ir/opt_passes.cpp b/src/dynarmic/src/dynarmic/ir/opt_passes.cpp
index 25afde9b5d..42d0f17d3a 100644
--- a/src/dynarmic/src/dynarmic/ir/opt_passes.cpp
+++ b/src/dynarmic/src/dynarmic/ir/opt_passes.cpp
@@ -86,7 +86,7 @@ static void ConstantMemoryReads(IR::Block& block, A32::UserCallbacks* cb) {
}
static void FlagsPass(IR::Block& block) {
- using Iterator = std::reverse_iterator;
+ using Iterator = typename std::reverse_iterator;
struct FlagInfo {
bool set_not_required = false;