From 033634ac4722c4fe3f344c2f8abb325018acd49d Mon Sep 17 00:00:00 2001 From: Niklas Eiling Date: Mon, 26 Feb 2024 15:38:26 +0100 Subject: [PATCH] register: ignore strict aliasing for setting register as float Signed-off-by: Niklas Eiling --- fpga/lib/ips/register.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fpga/lib/ips/register.cpp b/fpga/lib/ips/register.cpp index 4562727aa..b330743d1 100644 --- a/fpga/lib/ips/register.cpp +++ b/fpga/lib/ips/register.cpp @@ -69,8 +69,11 @@ void Register::setRegister(size_t reg, float value) { logger->error("Register index out of range: {}/{}", reg, registerNum); throw std::out_of_range("Register index out of range"); } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" Xil_Out32(getBaseAddr(registerMemory) + REGISTER_OUT(reg), reinterpret_cast(value)); +#pragma GCC diagnostic pop } uint32_t Register::getRegister(size_t reg) { @@ -87,7 +90,10 @@ float Register::getRegisterFloat(size_t reg) { throw std::out_of_range("Register index out of range"); } uint32_t value = Xil_In32(getBaseAddr(registerMemory) + REGISTER_OUT(reg)); +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" return reinterpret_cast(value); +#pragma GCC diagnostic pop } void Register::resetRegister(size_t reg) {