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



我试图在使用-O2编译时使用gcc-4.9.1.编译64位C库,我在不同的位置遇到以下错误。-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 

似乎在此补丁中添加了此错误:

+   /* 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 halvesn");
+       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

重新编译

最新更新