invalid register for .seh_savexmm in Cygwin

南笙酒味 提交于 2019-12-11 02:38:06

问题


$ make i have worked with cygwin but got compile error. I am not sure what is invalid register for .seh_savexmm please help me. I searched this problem on google but not find there are many problems but not soultion. Please help me.

perl ./generate-functions.pl -file operationMetadata.csv
g++ -std=c++14 -O3 -Wall -g -mavx512vl -mavx512f -mavx512pf -mavx512er -mavx512cd -fno-common -c int-test.c -o int-test.o
g++ -std=c++14 -O3 -Wall -g -mavx512vl -mavx512f -mavx512pf -mavx512er -mavx512cd -fno-common -c generated-functions.c -o generated-functions.o
/tmp/cczD9mlv.s: Assembler messages:
/tmp/cczD9mlv.s:39: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:41: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:43: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:45: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:47: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:49: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:51: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:53: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:55: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:57: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:59: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:61: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:63: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:65: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:67: Error: invalid register for .seh_savexmm
/tmp/cczD9mlv.s:69: Error: invalid register for .seh_savexmm

回答1:


Ross Ridge is Right. I solved that only adding -fno-asynchronous-unwind-tables. thanks Ross.




回答2:


I also encountered this bug recently. I found another approach for this: use -ffixed-reg option to disable use of xmm16..31 registers. You have to specify it for each register separately. Here is full list of options which you have to use:

-ffixed-xmm16 -ffixed-xmm17 -ffixed-xmm18 -ffixed-xmm19
-ffixed-xmm20 -ffixed-xmm21 -ffixed-xmm22 -ffixed-xmm23
-ffixed-xmm24 -ffixed-xmm25 -ffixed-xmm26 -ffixed-xmm27
-ffixed-xmm28 -ffixed-xmm29 -ffixed-xmm30 -ffixed-xmm31

After doing so compiler will not be able to use them, so it will have to store some data on stack instead of registers. This most probably will result in a slower code.

You can also try to use -flto flag, some people reported that it also helps. In my case it only reduced number of errors, so check if it will work for you.



来源:https://stackoverflow.com/questions/43152633/invalid-register-for-seh-savexmm-in-cygwin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!