问题
$ 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