Bug 39713 - [4.4/4.5 Regression] ICE in get_expr_value_id
Summary: [4.4/4.5 Regression] ICE in get_expr_value_id
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.4.0
: P3 normal
Target Milestone: 4.4.0
Assignee: Richard Biener
URL:
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2009-04-10 11:37 UTC by Jakub Jelinek
Modified: 2009-04-11 07:44 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2009-04-10 18:31:30


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jakub Jelinek 2009-04-10 11:37:39 UTC
Since r141534 (PR37542), the following testcase segfaults during fre at -O1 and higher:

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);
}
Comment 1 Richard Biener 2009-04-10 18:31:30 UTC
I will have a looksee.
Comment 2 Richard Biener 2009-04-10 18:43:45 UTC
I am testing the following

Index: tree-ssa-sccvn.c
===================================================================
--- tree-ssa-sccvn.c	(revision 145876)
+++ tree-ssa-sccvn.c	(working copy)
@@ -257,9 +257,10 @@ vn_get_expr_for (tree name)
   switch (TREE_CODE_CLASS (gimple_assign_rhs_code (def_stmt)))
     {
     case tcc_reference:
-      if (gimple_assign_rhs_code (def_stmt) == VIEW_CONVERT_EXPR
-	  || gimple_assign_rhs_code (def_stmt) == REALPART_EXPR
-	  || gimple_assign_rhs_code (def_stmt) == IMAGPART_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) == IMAGPART_EXPR)
+	  && TREE_CODE (gimple_assign_rhs1 (def_stmt)) == SSA_NAME)
 	expr = fold_build1 (gimple_assign_rhs_code (def_stmt),
 			    gimple_expr_type (def_stmt),
 			    TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0));
Comment 3 Richard Biener 2009-04-11 07:34:25 UTC
Subject: Bug 39713

Author: rguenth
Date: Sat Apr 11 07:34:09 2009
New Revision: 145951

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145951
Log:
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.

Added:
    trunk/gcc/testsuite/g++.dg/torture/pr39713.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-sccvn.c

Comment 4 Richard Biener 2009-04-11 07:43:11 UTC
Subject: Bug 39713

Author: rguenth
Date: Sat Apr 11 07:42:52 2009
New Revision: 145952

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145952
Log:
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.

Added:
    branches/gcc-4_4-branch/gcc/testsuite/g++.dg/torture/pr39713.C
Modified:
    branches/gcc-4_4-branch/gcc/ChangeLog
    branches/gcc-4_4-branch/gcc/testsuite/ChangeLog
    branches/gcc-4_4-branch/gcc/tree-ssa-sccvn.c

Comment 5 Richard Biener 2009-04-11 07:44:08 UTC
Fixe.d