https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63751
Bug ID: 63751 Summary: ICE in tree_to_uhwi, at tree.h:3668 Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: doko at gcc dot gnu.org fails on the 4.9 branch, works on the trunk $ cat tst.c /* testatomic.c */ #include <stdatomic.h> #include <stdbool.h> struct myrcu_pointer { _Atomic(void *) p; }; bool myrcu_compare_exchange__(struct myrcu_pointer *pointer, const void *exp, void *value, memory_order order_succ, memory_order order_fail) { return atomic_compare_exchange_weak_explicit(&pointer->p, (void *) exp, value, order_succ, order_fail); } $ gcc -c tst.c tst.c: In function 'myrcu_compare_exchange__': tst.c:15:5: internal compiler error: in tree_to_uhwi, at tree.h:3668 return atomic_compare_exchange_weak_explicit(&pointer->p, (void *) exp, ^ Please submit a full bug report, with preprocessed source if appropriate. $ /usr/lib/gcc-snapshot/bin/gcc -c tst.c In file included from tst.c:2:0: tst.c: In function 'myrcu_compare_exchange__': tst.c:15:12: error: size mismatch in argument 2 of '__atomic_compare_exchange' return atomic_compare_exchange_weak_explicit(&pointer->p, (void *) exp, ^