GCC错误:扩展寄存器没有高半

时间:2017-08-29 19:01:17

标签: c gcc gcc4.9

我正在尝试使用gcc-4.9.1.编译64位C库在​​使用-O2进行编译时,我在不同的地方收到以下错误。 -O0编译工作正常。

Error:
error: extended registers have no high halves

知道为什么会出现此错误消息以及如何解决此问题。它指向的行号是函数的结尾。

编译器选项是:

 -march=x86-64 -fno-omit-frame-pointer -m64 -Wno-pointer-sign
 -Wno-error=address -ggdb -gdwarf-2 -g2 -feliminate-unused-debug-types 

1 个答案:

答案 0 :(得分:0)

patch中已添加此错误:

+   /* Irritantingly AMD extended registers use different naming convention
+      from the normal registers.  */
+   if (REX_INT_REG_P (x))
+   {
+       switch (code)
+     {
+     case 5:
+       error ("Extended registers have no high halves\n");
+       break;
+     case 1:
+       fprintf (file, "r%ib", REGNO (x) - FIRST_REX_INT_REG + 8);
+       break;
+     case 2:
+       fprintf (file, "r%iw", REGNO (x) - FIRST_REX_INT_REG + 8);
+       break;
+     case 4:
+       fprintf (file, "r%id", REGNO (x) - FIRST_REX_INT_REG + 8);
+       break;
+     case 8:
+       fprintf (file, "r%i", REGNO (x) - FIRST_REX_INT_REG + 8);
+       break;
+     default:
+       error ("Unsupported operand size for extended register.\n");
+       break;
+      }
+       return;
+   }

尝试重新编译时不使用-march=x86-64选项。