[C/C++ PATCH] Fix ICE in get_atomic_generic_size (PR c++/83059)
Nathan Sidwell
nathan@acm.org
Mon Nov 20 21:25:00 GMT 2017
On 11/20/2017 04:03 PM, Jakub Jelinek wrote:
> Hi!
>
> Not all INTEGER_CSTs satisfy tree_fits_uhwi_p, and those that don't
> ICE in tree_to_uhwi. But, what the memmodel_base function actually
> does is mask only the 16 low bits, the upper bits are reserved for
> target dependent flags and -Winvalid-memory-model already warns
> about those during expansion. So it makes no sense to warn about say
> (-1 << 16) here, thus I'm using TREE_INT_CST_LOW instead of tree_to_*hwi,
> because we really care just about the low 16 bits thereof.
> - int i = tree_to_uhwi (p);
> - if (i < 0 || (memmodel_base (i) >= MEMMODEL_LAST))
> - {
> - warning_at (loc, OPT_Winvalid_memory_model,
> - "invalid memory model argument %d of %qE", x + 1,
> - function);
> - }
> + if (memmodel_base (TREE_INT_CST_LOW (p)) >= MEMMODEL_LAST)
> + warning_at (loc, OPT_Winvalid_memory_model,
> + "invalid memory model argument %d of %qE", x + 1,
> + function);
Ok with a comment mentioning memmodel_base only looks at low-order bits.
nathan
--
Nathan Sidwell
More information about the Gcc-patches
mailing list