[patch] Fix PR48183, NEON ICE in emit-rtl.c:immed_double_const() under -g

Chung-Lin Tang cltang@codesourcery.com
Sun Mar 20 11:02:00 GMT 2011


Hi,
PR48183 is a case where ARM NEON instrinsics, under -O -g, produce debug
insns that tries to expand OImode (32-byte integer) zero constants, much
too large to represent as two HOST_WIDE_INTs; as the internals manual
indicates, such large constants are not supported in general, and ICEs
on the GET_MODE_BITSIZE(mode) == 2*HOST_BITS_PER_WIDE_INT assertion.

This patch allows the cases where the large integer constant is still
representable using a single CONST_INT, such as zero(0). Bootstrapped
and tested on i686 and x86_64, cross-tested on ARM, all without
regressions. Okay for trunk?

Thanks,
Chung-Lin

2011-03-20  Chung-Lin Tang  <cltang@codesourcery.com>

	* emit-rtl.c (immed_double_const): Allow wider than
	2*HOST_BITS_PER_WIDE_INT mode constants when they are
	representable as a single const_int RTX.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pr48183.diff
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20110320/65710da3/attachment.ksh>


More information about the Gcc-patches mailing list