Как исправить ошибку 'inlining при вызове always_inline' __builtin_alloca '' при сборке GCC для Windows - PullRequest
1 голос
/ 04 мая 2019

Я собираю GCC 8.3.0 для Windows 10, используя msys, и сборка завершается со следующей ошибкой:

gcc -c -DHAVE_CONFIG_H -g  -I. -I../../source/libiberty/../include  -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -Wshadow=local -pedantic  -D_GNU_SOURCE ../../source/libiberty/pex-win32.c -o pex-win32.o
In file included from ../../source/libiberty/pex-common.h:25,
                 from ../../source/libiberty/pex-win32.c:21:
c:\software-development\prebuilt\mingw32\include\alloca.h: In function 'win32_spawn':
../../source/libiberty/../include/libiberty.h:722:20: error: inlining failed in call to always_inline '__builtin_alloca': function not considered for inlining
 # define alloca(x) __builtin_alloca(x)
                    ^~~~~~~~~~~~~~~~
In file included from c:\software-development\prebuilt\mingw32\include\stdlib.h:499,
                 from c:\software-development\prebuilt\mingw32\include\objbase.h:12,
                 from c:\software-development\prebuilt\mingw32\include\ole2.h:9,
                 from c:\software-development\prebuilt\mingw32\include\windows.h:100,
                 from ../../source/libiberty/pex-win32.c:23:
c:\software-development\prebuilt\mingw32\include\alloca.h:62:48: note: called from here
 __CRT_ALIAS void *alloca( size_t __n ){ return __builtin_alloca( __n ); }

Есть ли разумный способ исправить эту ошибку в конфигурации или, если это не удалось, каким-то образом исправить или обойти эту проблему?

Вот моя текущая конфигурация, запущенная из командного файла:

--prefix=/c/software-development/gcc-8.3.0/install-x86_64-w64-mingw32 \
--build=x86_64-w64-mingw32 \
--enable-shared \
--enable-static \
--enable-bootstrap \
--enable-languages=c,c++,lto

Та же ошибка произошла при сборке gcc 8.2.0 и при догадке о сборке. Я использую GNU MinGW 8.2.0 для сборки.

1 Ответ

0 голосов
/ 20 июня 2019

Попробуйте поменять местами в файле libiberty.h «__builtin_alloca» на «C_alloca». Замена в одном месте. В препроцессорных командах. Это помогло мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...