Bug 44119 - [4.6 Regression] error: SSA name in freelist but still referenced
Summary: [4.6 Regression] error: SSA name in freelist but still referenced
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.6.0
: P3 normal
Target Milestone: 4.6.0
Assignee: Richard Biener
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-13 15:21 UTC by John Regehr
Modified: 2010-05-14 20:22 UTC (History)
2 users (show)

See Also:
Host: x86_64-unknown-linux-gnu
Target: x86_64-unknown-linux-gnu
Build: x86_64-unknown-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2010-05-13 15:27:59


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Regehr 2010-05-13 15:21:57 UTC
[regehr@gamow tmp413]$ current-gcc -v
Using built-in specs.
COLLECT_GCC=current-gcc
COLLECT_LTO_WRAPPER=/uusoc/exports/scratch/regehr/z/compiler-install/gcc-r159348-install/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.6.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --with-libelf=/usr/local --enable-lto --prefix=/home/regehr/z/compiler-install/gcc-r159348-install --program-prefix=r159348- --enable-languages=c,c++
Thread model: posix
gcc version 4.6.0 20100513 (experimental) (GCC) 

[regehr@gamow tmp413]$ current-gcc -O2 -c small.c

small.c: In function 'func_96':
small.c:32:7: warning: overflow in implicit constant conversion [-Woverflow]
small.c:22:1: error: SSA name in freelist but still referenced
pretmp.15_47
small.c:38:13: note: in statement
# .MEM_24 = VDEF <.MEM_21(D)>
*pretmp.8_41 = pretmp.15_47;

small.c:22:1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

[regehr@gamow tmp413]$ cat small.c

typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef unsigned int uint32_t;
static int8_t
safe_mul_func_int16_t_s_s (int16_t si1, int8_t si2)
{
  return si1 && si2 && si1 > +si2 || si1 && si2 && si2 < +si1 || si1 && si2
    && si1 < +si2 || si1 && si2 && si1 && si2 < +si1 ? : si1 * si2;
}

struct S0
{
};
int32_t g_72[7][4][1];
int32_t *g_184 = &g_72[1][2][0];
int32_t **g_224 = &g_184;
struct S0 g_244 = {
};

int8_t *
func_96 (int8_t p_97, uint32_t p_98, uint32_t p_99)
{
  struct S0 *l_243 = &g_244;
  int i;
  for (i = 0; i < 1; p_98 = 1)
    {
      int32_t *l_202[3];
      int i;
      for (i = 0; i < 1; i++)
	l_202[i] = &g_72[2][2][0];
      if (safe_mul_func_int16_t_s_s (0xC4CAF0, **g_224))
	{
	  if (p_98 && &l_243)
	    {
	    }
	  else
	    *g_224 = l_202[0];
	  for (0;; 1)
	    {
	    }
	}
    }
  return 0;
}
Comment 1 Richard Biener 2010-05-13 15:27:39 UTC
Confirmed.
Comment 2 Richard Biener 2010-05-13 15:27:59 UTC
The PRE change again.
Comment 3 Richard Biener 2010-05-14 20:18:55 UTC
Subject: Bug 44119

Author: rguenth
Date: Fri May 14 20:18:34 2010
New Revision: 159412

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=159412
Log:
2010-05-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/44119
	* tree-ssa-pre.c (eliminate): Properly mark replacement of
	a PHI node necessary.

	* gcc.c-torture/compile/pr44119.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.c-torture/compile/pr44119.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-pre.c

Comment 4 Richard Biener 2010-05-14 20:22:09 UTC
Fixed.