diff --git a/src/common/types.h b/src/common/types.h index b14915bb6..7f40d2f28 100644 --- a/src/common/types.h +++ b/src/common/types.h @@ -100,6 +100,13 @@ char (&__countof_ArraySizeHelper(T (&array)[N]))[N]; #define RESTRICT __restrict__ #endif +// msvc requires a different attribute, of course +#ifdef _MSC_VER +#define NO_UNIQUE_ADDRESS [[msvc::no_unique_address]] +#else +#define NO_UNIQUE_ADDRESS [[no_unique_address]] +#endif + // disable warnings that show up at warning level 4 // TODO: Move to build system instead #ifdef _MSC_VER diff --git a/src/core/gpu_sw_rasterizer.inl b/src/core/gpu_sw_rasterizer.inl index 1bf4ff7a0..a01e59b22 100644 --- a/src/core/gpu_sw_rasterizer.inl +++ b/src/core/gpu_sw_rasterizer.inl @@ -477,12 +477,12 @@ struct PixelVectors GSVectorNi mask_and; GSVectorNi mask_or; - typename std::conditional_t texture_window_and_x; - typename std::conditional_t texture_window_or_x; - typename std::conditional_t texture_window_and_y; - typename std::conditional_t texture_window_or_y; - typename std::conditional_t texture_base_x; - typename std::conditional_t texture_base_y; + NO_UNIQUE_ADDRESS typename std::conditional_t texture_window_and_x; + NO_UNIQUE_ADDRESS typename std::conditional_t texture_window_or_x; + NO_UNIQUE_ADDRESS typename std::conditional_t texture_window_and_y; + NO_UNIQUE_ADDRESS typename std::conditional_t texture_window_or_y; + NO_UNIQUE_ADDRESS typename std::conditional_t texture_base_x; + NO_UNIQUE_ADDRESS typename std::conditional_t texture_base_y; PixelVectors(const GPUBackendDrawCommand* cmd) {