re PR tree-optimization/80374 (ICE in fold_convert_loc, at fold-const.c:2384)

PR tree-optimization/80374
	* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
	record anything if we can not convert integer_zero_node to the
	desired type.

	PR tree-optimization/80374
	* g++.dg/pr80374.c: New test.

From-SVN: r246819
This commit is contained in:
Jeff Law 2017-04-10 13:19:42 -06:00 committed by Jeff Law
parent bd8f86429e
commit 9058a2c5c5
4 changed files with 33 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2017-04-10 Jeff Law <law@redhat.com>
PR tree-optimization/80374
* tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
record anything if we can not convert integer_zero_node to the
desired type.
2017-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/80108

View File

@ -1,3 +1,8 @@
2017-04-10 Jeff Law <law@redhat.com>
PR tree-optimization/80374
* g++.dg/pr80374.c: New test.
2017-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/80108

View File

@ -0,0 +1,19 @@
void a (const char *, const char *, int, const char *)
__attribute__ ((__noreturn__));
template <typename b, int>
void
c () try
{
throw;
}
catch (b d)
{
if (d)
a ("", "", 2, __PRETTY_FUNCTION__);
}
main ()
{
using e = decltype (nullptr);
c<volatile e, true> ();
}

View File

@ -701,7 +701,8 @@ derive_equivalences_from_bit_ior (tree name,
const_and_copies *const_and_copies,
int recursion_limit)
{
if (recursion_limit == 0)
if (recursion_limit == 0
|| !fold_convertible_p (TREE_TYPE (name), integer_zero_node))
return;
if (TREE_CODE (name) == SSA_NAME)