j'ai un avertissement lors de la compilation d'un morceau de code à l'aide pthread_cleanup_push/pop avec - O2CFLAGS. Juste en supprimant les cflags O2 dans le Makefile, faites-le compiler sans problème.pthread_cleanup_push et O2 CFLAGS
Est-il interdit d'utiliser l'optimisation gcc avec ces macros pthread? Je n'ai pas pu trouver quoi que ce soit dans l'homme ou la documentation. En passant, y a-t-il une alternative à nettoyer les choses à la fin d'un fil? Aussi, il fonctionne parfaitement avec le bras gcc. Mais pas sur x86 gcc.
Attention:
x/x.c:1292:2: warning: variable ‘__cancel_routine’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
pthread_cleanup_push(x_cleanup, &fd);
Mon option actuelle CFLAGS:
-W -Wall -Wformat -Wformat-security -Wextra -Wno-unused-result,
-Wextra -Wno-long-long -Wno-variadic-macros -Wno-missing-field-initializers
-std=gnu99 -O2
Je suppose que vous avez vu [BZ 61118] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61118)? – yugr
@yugr Oui, je l'ai déjà vu même si je ne savais pas si c'était la raison. Le bug était rapport sur 2014 ... C'est fou ... La seule solution est de supprimer le Werror jusqu'à une solution? Revenez-vous sur une version précédente de gcc sur x86? Ce n'est pas une impasse pour mon code puisque le problème n'est pas présent avec un compilateur croisé ARM. Mais je voulais être sûr que ce n'était pas un plus gros problème qui peut provoquer un comportement inattendu de mon code ou des bugs. – ArthurLambert
Vous pouvez ajouter '-Wno-clobbered' à votre liste d'avertissements désactivés. – caf