On March 19, 2018 8:39:20 PM GMT+01:00, Jakub Jelinek <ja...@redhat.com> wrote: >Hi! > >The enum memmodel doesn't declare the target specific enumerators, >which are just defines in i386.h, but as those are above any >enumerators in the generic enum, it is strictly speaking UB when >values with that enum memmodel type have the higher target dependent >bits >set. This patch just makes sure that the enumerator is full signed >32-bit. > >Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
OK. Richard. >2018-03-19 Jakub Jelinek <ja...@redhat.com> > > PR rtl-optimization/84643 > * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator. > >--- gcc/memmodel.h.jj 2018-01-03 10:19:55.495534012 +0100 >+++ gcc/memmodel.h 2018-03-19 10:31:42.980812157 +0100 >@@ -45,7 +45,9 @@ enum memmodel > MEMMODEL_LAST = 6, > MEMMODEL_SYNC_ACQUIRE = MEMMODEL_ACQUIRE | MEMMODEL_SYNC, > MEMMODEL_SYNC_RELEASE = MEMMODEL_RELEASE | MEMMODEL_SYNC, >- MEMMODEL_SYNC_SEQ_CST = MEMMODEL_SEQ_CST | MEMMODEL_SYNC >+ MEMMODEL_SYNC_SEQ_CST = MEMMODEL_SEQ_CST | MEMMODEL_SYNC, >+ /* Say that all the higher bits are valid target extensions. */ >+ MEMMODEL_MAX = INTTYPE_MAXIMUM (int) > }; > > /* Return the memory model from a host integer. */ > > Jakub