重新编译
我试图在使用-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
。