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,
            ^

Reply via email to