Commit 8810712e by Richard Guenther Committed by Richard Biener

re PR tree-optimization/39713 (ICE in get_expr_value_id)

2009-04-11  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/39713
	* tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
	reference trees have SSA_NAME operands.

	* g++.dg/torture/pr39713.C: New testcase.

From-SVN: r145951
parent fa78c0c1
2009-04-11 Richard Guenther <rguenther@suse.de> 2009-04-11 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39713
* tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
reference trees have SSA_NAME operands.
2009-04-11 Richard Guenther <rguenther@suse.de>
PR c/39712 PR c/39712
* c-gimplify.c (c_gimplify_expr): Adjust check for mismatched * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
address expressions. address expressions.
......
2009-04-11 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39713
* g++.dg/torture/pr39713.C: New testcase.
2009-04-10 Richard Guenther <rguenther@suse.de> 2009-04-10 Richard Guenther <rguenther@suse.de>
PR c/39712 PR c/39712
......
/* { dg-do compile } */
template <typename To, typename From>
static inline To
bitwise_cast (From from)
{
union
{
From f;
To t;
} u;
u.f = from;
return u.t;
}
extern void foo (unsigned char *);
double
bar ()
{
unsigned char b[sizeof (unsigned long long)];
foo (b);
return bitwise_cast<double> (*(unsigned long long *) b);
}
...@@ -257,9 +257,10 @@ vn_get_expr_for (tree name) ...@@ -257,9 +257,10 @@ vn_get_expr_for (tree name)
switch (TREE_CODE_CLASS (gimple_assign_rhs_code (def_stmt))) switch (TREE_CODE_CLASS (gimple_assign_rhs_code (def_stmt)))
{ {
case tcc_reference: case tcc_reference:
if (gimple_assign_rhs_code (def_stmt) == VIEW_CONVERT_EXPR if ((gimple_assign_rhs_code (def_stmt) == VIEW_CONVERT_EXPR
|| gimple_assign_rhs_code (def_stmt) == REALPART_EXPR || gimple_assign_rhs_code (def_stmt) == REALPART_EXPR
|| gimple_assign_rhs_code (def_stmt) == IMAGPART_EXPR) || gimple_assign_rhs_code (def_stmt) == IMAGPART_EXPR)
&& TREE_CODE (gimple_assign_rhs1 (def_stmt)) == SSA_NAME)
expr = fold_build1 (gimple_assign_rhs_code (def_stmt), expr = fold_build1 (gimple_assign_rhs_code (def_stmt),
gimple_expr_type (def_stmt), gimple_expr_type (def_stmt),
TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0)); TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment