From 6f006d051e1fad075048ea5664e1ef0605e48a46 Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Wed, 4 Nov 2020 20:41:16 -0500
Subject: [PATCH] General: Fix clang build

Allows building on clang to work again
---
 src/common/fiber.h          | 4 ++--
 src/common/spin_lock.h      | 8 ++++++++
 src/video_core/dma_pusher.h | 7 +++----
 src/video_core/gpu.h        | 2 +-
 4 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/common/fiber.h b/src/common/fiber.h
index 699286ee2..1a027be96 100644
--- a/src/common/fiber.h
+++ b/src/common/fiber.h
@@ -41,8 +41,8 @@ public:
     Fiber(const Fiber&) = delete;
     Fiber& operator=(const Fiber&) = delete;
 
-    Fiber(Fiber&&) = default;
-    Fiber& operator=(Fiber&&) = default;
+    Fiber(Fiber&&) = delete;
+    Fiber& operator=(Fiber&&) = delete;
 
     /// Yields control from Fiber 'from' to Fiber 'to'
     /// Fiber 'from' must be the currently running fiber.
diff --git a/src/common/spin_lock.h b/src/common/spin_lock.h
index 4f946a258..06ac2f5bb 100644
--- a/src/common/spin_lock.h
+++ b/src/common/spin_lock.h
@@ -15,6 +15,14 @@ namespace Common {
  */
 class SpinLock {
 public:
+    SpinLock() = default;
+
+    SpinLock(const SpinLock&) = delete;
+    SpinLock& operator=(const SpinLock&) = delete;
+
+    SpinLock(SpinLock&&) = delete;
+    SpinLock& operator=(SpinLock&&) = delete;
+
     void lock();
     void unlock();
     [[nodiscard]] bool try_lock();
diff --git a/src/video_core/dma_pusher.h b/src/video_core/dma_pusher.h
index 8496ba2da..9d9a750d9 100644
--- a/src/video_core/dma_pusher.h
+++ b/src/video_core/dma_pusher.h
@@ -18,6 +18,8 @@ class System;
 
 namespace Tegra {
 
+class GPU;
+
 enum class SubmissionMode : u32 {
     IncreasingOld = 0,
     Increasing = 1,
@@ -74,8 +76,7 @@ union CommandHeader {
 static_assert(std::is_standard_layout_v<CommandHeader>, "CommandHeader is not standard layout");
 static_assert(sizeof(CommandHeader) == sizeof(u32), "CommandHeader has incorrect size!");
 
-static constexpr CommandHeader BuildCommandHeader(BufferMethods method, u32 arg_count,
-                                                  SubmissionMode mode) {
+inline CommandHeader BuildCommandHeader(BufferMethods method, u32 arg_count, SubmissionMode mode) {
     CommandHeader result{};
     result.method.Assign(static_cast<u32>(method));
     result.arg_count.Assign(arg_count);
@@ -83,8 +84,6 @@ static constexpr CommandHeader BuildCommandHeader(BufferMethods method, u32 arg_
     return result;
 }
 
-class GPU;
-
 struct CommandList final {
     CommandList() = default;
     explicit CommandList(std::size_t size) : command_lists(size) {}
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index 5444b49f3..cf5235a79 100644
--- a/src/video_core/gpu.h
+++ b/src/video_core/gpu.h
@@ -273,7 +273,7 @@ public:
         BitField<0, 1, FenceOperation> op;
         BitField<8, 24, u32> syncpoint_id;
 
-        static constexpr CommandHeader Build(FenceOperation op, u32 syncpoint_id) {
+        static CommandHeader Build(FenceOperation op, u32 syncpoint_id) {
             FenceAction result{};
             result.op.Assign(op);
             result.syncpoint_id.Assign(syncpoint_id);