Неверный регистр для.seh_savexmm в Cygwin
$ make Я работал с Cygwin, но получил ошибку компиляции. Я не уверен, что регистрация недействительна для.seh_savexmm, пожалуйста, помогите мне. Я искал эту проблему в Google, но не нашел там много проблем, но не подумала. Пожалуйста, помогите мне.
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 ответ
Росс Ридж прав. Я решил, что только добавление -fno-asynchronous-unwind-tables. спасибо Росс
Я также недавно столкнулся с этой ошибкой. Я нашел другой подход для этого: использовать -ffixed-reg
возможность отключить использование регистров xmm16..31. Вы должны указать это для каждого регистра отдельно. Вот полный список опций, которые вы должны использовать:
-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
После этого компилятор не сможет их использовать, поэтому ему придется хранить некоторые данные в стеке вместо регистров. Это, скорее всего, приведет к более медленному коду.
Вы также можете попробовать использовать -flto
флаг, некоторые люди сообщили, что это также помогает. В моем случае это только уменьшило количество ошибок, поэтому проверьте, будет ли это работать на вас.