mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/44937 (IPA-split causes crash due to null pointer deref)
2010-09-02 Richard Guenther <rguenther@suse.de> PR tree-optimization/44937 PR tree-optimization/45412 * ipa-split.c (split_function): Properly remove PHI nodes. * g++.dg/opt/pr45412.C: New testcase. * gcc.c-torture/compile/pr45412.c: Likewise. * gcc.c-torture/compile/pr44937.c: Likewise. From-SVN: r163775
This commit is contained in:
parent
c330d181bc
commit
6b8c9df822
|
@ -1,3 +1,9 @@
|
||||||
|
2010-09-02 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/44937
|
||||||
|
PR tree-optimization/45412
|
||||||
|
* ipa-split.c (split_function): Properly remove PHI nodes.
|
||||||
|
|
||||||
2010-09-02 Joseph Myers <joseph@codesourcery.com>
|
2010-09-02 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* opts.h (struct cl_option): Add warn_message field.
|
* opts.h (struct cl_option): Add warn_message field.
|
||||||
|
|
|
@ -993,8 +993,8 @@ split_function (struct split_point *split_point)
|
||||||
{
|
{
|
||||||
gimple stmt = gsi_stmt (gsi);
|
gimple stmt = gsi_stmt (gsi);
|
||||||
gcc_assert (!is_gimple_reg (gimple_phi_result (stmt)));
|
gcc_assert (!is_gimple_reg (gimple_phi_result (stmt)));
|
||||||
mark_sym_for_renaming (SSA_NAME_VAR (PHI_RESULT (stmt)));
|
mark_virtual_phi_result_for_renaming (stmt);
|
||||||
gsi_remove (&gsi, false);
|
remove_phi_node (&gsi, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* When we pass aorund the value, use existing return block. */
|
/* When we pass aorund the value, use existing return block. */
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
2010-09-02 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/44937
|
||||||
|
PR tree-optimization/45412
|
||||||
|
* g++.dg/opt/pr45412.C: New testcase.
|
||||||
|
* gcc.c-torture/compile/pr45412.c: Likewise.
|
||||||
|
* gcc.c-torture/compile/pr44937.c: Likewise.
|
||||||
|
|
||||||
2010-09-02 Joseph Myers <joseph@codesourcery.com>
|
2010-09-02 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* gcc.dg/cpp/warn-comments-3.c: New. Based on warn-comments-2.c
|
* gcc.dg/cpp/warn-comments-3.c: New. Based on warn-comments-2.c
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
// { dg-do compile }
|
||||||
|
// { dg-options "-O2 -fipa-cp-clone -ftracer" }
|
||||||
|
|
||||||
|
int foo (int *);
|
||||||
|
void bar ();
|
||||||
|
|
||||||
|
struct S
|
||||||
|
{
|
||||||
|
virtual int vm ();
|
||||||
|
~S ();
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
S::vm ()
|
||||||
|
{
|
||||||
|
int state;
|
||||||
|
switch (foo (&state))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
bar ();
|
||||||
|
case 1:
|
||||||
|
delete this;
|
||||||
|
}
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
int g_19;
|
||||||
|
int *g_42;
|
||||||
|
int **volatile g = &g_42;
|
||||||
|
int g_67[5][9][2][1] = {
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
func_4 (int p_5, unsigned char p_6, unsigned char p_7)
|
||||||
|
{
|
||||||
|
unsigned char l_8[1];
|
||||||
|
if (p_6)
|
||||||
|
goto lbl_13;
|
||||||
|
for (p_6 = 0; p_6; p_6 = (p_6, 0))
|
||||||
|
if (0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
lbl_13:for (p_6 = 0; p_6 < 1; p_6 += 1)
|
||||||
|
l_8[p_6] = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int *
|
||||||
|
func_45 (unsigned long p_46, unsigned char p_47)
|
||||||
|
{
|
||||||
|
int *l_56 = &g_19;
|
||||||
|
(void *)&l_56 != (void *)&g | !1 == func_4 (0, g_67[2][6][1][0], 0) ^ func_4 (1, 0, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
extern void baz (int, int, int);
|
||||||
|
|
||||||
|
int j;
|
||||||
|
|
||||||
|
int
|
||||||
|
bar (void)
|
||||||
|
{
|
||||||
|
int n = 0, *np = &n;
|
||||||
|
if (j)
|
||||||
|
baz (0, 0, 0);
|
||||||
|
if (j)
|
||||||
|
baz (0, 0, 0);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
foo (void)
|
||||||
|
{
|
||||||
|
bar ();
|
||||||
|
bar ();
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue