]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
GCN: Restore build with GCC 4.8
authorThomas Schwinge <thomas@codesourcery.com>
Fri, 14 Oct 2022 22:10:29 +0000 (00:10 +0200)
committerThomas Schwinge <thomas@codesourcery.com>
Mon, 17 Oct 2022 12:17:18 +0000 (14:17 +0200)
For example, for "g++-4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4", the recent
commit r13-3220-g45381d6f9f4e7b5c7b062f5ad8cc9788091c2d07
"amdgcn: add multiple vector sizes" broke the build:

    In file included from [...]/source-gcc/gcc/coretypes.h:458:0,
                     from [...]/source-gcc/gcc/config/gcn/gcn.cc:24:
    [...]/source-gcc/gcc/config/gcn/gcn.cc: In function ‘machine_mode VnMODE(int, machine_mode)’:
    ./insn-modes.h:42:71: error: temporary of non-literal type ‘scalar_int_mode’ in a constant expression
     #define QImode (scalar_int_mode ((scalar_int_mode::from_int) E_QImode))
                                                                           ^
    [...]/source-gcc/gcc/config/gcn/gcn.cc:405:10: note: in expansion of macro ‘QImode’
         case QImode:
              ^
    In file included from [...]/source-gcc/gcc/coretypes.h:478:0,
                     from [...]/source-gcc/gcc/config/gcn/gcn.cc:24:
    [...]/source-gcc/gcc/machmode.h:410:7: note: ‘scalar_int_mode’ is not literal because:
     class scalar_int_mode
           ^
    [...]/source-gcc/gcc/machmode.h:410:7: note:   ‘scalar_int_mode’ is not an aggregate, does not have a trivial default constructor, and has no constexpr constructor that is not a copy or move constructor
    [...]

Addressing this like simiar issues have been addressed in the past.

gcc/
* config/gcn/gcn.cc (VnMODE): Use 'case E_QImode:' instead of
'case QImode:', etc.

gcc/config/gcn/gcn.cc

index 3dc294c2d2f434abaac022ebcefcc9c5d8a30533..8777255a5c6255df53ee3664b55cdc3ee9f714f2 100644 (file)
@@ -402,7 +402,7 @@ VnMODE (int n, machine_mode mode)
 {
   switch (mode)
     {
-    case QImode:
+    case E_QImode:
       switch (n)
        {
        case 2: return V2QImode;
@@ -413,7 +413,7 @@ VnMODE (int n, machine_mode mode)
        case 64: return V64QImode;
        }
       break;
-    case HImode:
+    case E_HImode:
       switch (n)
        {
        case 2: return V2HImode;
@@ -424,7 +424,7 @@ VnMODE (int n, machine_mode mode)
        case 64: return V64HImode;
        }
       break;
-    case HFmode:
+    case E_HFmode:
       switch (n)
        {
        case 2: return V2HFmode;
@@ -435,7 +435,7 @@ VnMODE (int n, machine_mode mode)
        case 64: return V64HFmode;
        }
       break;
-    case SImode:
+    case E_SImode:
       switch (n)
        {
        case 2: return V2SImode;
@@ -446,7 +446,7 @@ VnMODE (int n, machine_mode mode)
        case 64: return V64SImode;
        }
       break;
-    case SFmode:
+    case E_SFmode:
       switch (n)
        {
        case 2: return V2SFmode;
@@ -457,7 +457,7 @@ VnMODE (int n, machine_mode mode)
        case 64: return V64SFmode;
        }
       break;
-    case DImode:
+    case E_DImode:
       switch (n)
        {
        case 2: return V2DImode;
@@ -468,7 +468,7 @@ VnMODE (int n, machine_mode mode)
        case 64: return V64DImode;
        }
       break;
-    case DFmode:
+    case E_DFmode:
       switch (n)
        {
        case 2: return V2DFmode;