On 27.09.2017 20:42, Nicholas Miell wrote:
Giving the same name to two different types violates the C++ One Definition
Rule and gcc will complain about it in LTO builds.

Oh my. What does the gcc warning look like? (I assume it's just a warning.)

Since these are auto-generated headers which are very much standardized inside AMD, I'm hesitant to apply this particular patch. Certainly there can't be a bug here in reality, since those are just dumb unions.

I think internally we'd rather want a namespace-based solution. Any ideas? I need to reflect on this a bit...

Thanks,
Nicolai



Signed-off-by: Nicholas Miell <nmi...@gmail.com>
---
  src/amd/addrlib/gfx9/gfx9addrlib.cpp        | 2 +-
  src/amd/addrlib/inc/chip/gfx9/gfx9_gb_reg.h | 2 +-
  src/amd/addrlib/inc/chip/r800/si_gb_reg.h   | 2 +-
  src/amd/addrlib/r800/siaddrlib.cpp          | 4 ++--
  4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/amd/addrlib/gfx9/gfx9addrlib.cpp 
b/src/amd/addrlib/gfx9/gfx9addrlib.cpp
index edb4c6e636a..6837e0a3d9b 100644
--- a/src/amd/addrlib/gfx9/gfx9addrlib.cpp
+++ b/src/amd/addrlib/gfx9/gfx9addrlib.cpp
@@ -992,7 +992,7 @@ BOOL_32 Gfx9Lib::HwlInitGlobalParams(
if (m_settings.isArcticIsland)
      {
-        GB_ADDR_CONFIG gbAddrConfig;
+        GB_ADDR_CONFIG_GFX9 gbAddrConfig;
gbAddrConfig.u32All = pCreateIn->regValue.gbAddrConfig; diff --git a/src/amd/addrlib/inc/chip/gfx9/gfx9_gb_reg.h b/src/amd/addrlib/inc/chip/gfx9/gfx9_gb_reg.h
index 823710cc189..d387dba2271 100644
--- a/src/amd/addrlib/inc/chip/gfx9/gfx9_gb_reg.h
+++ b/src/amd/addrlib/inc/chip/gfx9/gfx9_gb_reg.h
@@ -36,7 +36,7 @@
  #error "BIGENDIAN_CPU or LITTLEENDIAN_CPU must be defined"
  #endif
-union GB_ADDR_CONFIG {
+union GB_ADDR_CONFIG_GFX9 {
      struct {
  #if        defined(LITTLEENDIAN_CPU)
          unsigned int                       NUM_PIPES : 3;
diff --git a/src/amd/addrlib/inc/chip/r800/si_gb_reg.h 
b/src/amd/addrlib/inc/chip/r800/si_gb_reg.h
index cf67f602bdf..99a2879048b 100644
--- a/src/amd/addrlib/inc/chip/r800/si_gb_reg.h
+++ b/src/amd/addrlib/inc/chip/r800/si_gb_reg.h
@@ -89,7 +89,7 @@
  typedef union {
       unsigned int val : 32;
       GB_ADDR_CONFIG_T f;
-} GB_ADDR_CONFIG;
+} GB_ADDR_CONFIG_SI;
#if defined(LITTLEENDIAN_CPU) diff --git a/src/amd/addrlib/r800/siaddrlib.cpp b/src/amd/addrlib/r800/siaddrlib.cpp
index 9ee1335b3ae..af794c2dbea 100644
--- a/src/amd/addrlib/r800/siaddrlib.cpp
+++ b/src/amd/addrlib/r800/siaddrlib.cpp
@@ -2239,7 +2239,7 @@ VOID SiLib::HwlSetupTileInfo(
  *   SiLib::DecodeGbRegs
  *
  *   @brief
-*       Decodes GB_ADDR_CONFIG and noOfBanks/noOfRanks
+*       Decodes GB_ADDR_CONFIG_SI and noOfBanks/noOfRanks
  *
  *   @return
  *       TRUE if all settings are valid
@@ -2249,7 +2249,7 @@ VOID SiLib::HwlSetupTileInfo(
  BOOL_32 SiLib::DecodeGbRegs(
      const ADDR_REGISTER_VALUE* pRegValue) ///< [in] create input
  {
-    GB_ADDR_CONFIG  reg;
+    GB_ADDR_CONFIG_SI  reg;
      BOOL_32         valid = TRUE;
reg.val = pRegValue->gbAddrConfig;



--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to