tree-optimize.c (init_tree_optimization_passes): Run pass_late_warn_uninitialized before the last DCE run.
tree-optimization/18501 * tree-optimize.c (init_tree_optimization_passes): Run pass_late_warn_uninitialized before the last DCE run. testsuite/ChangeLog: * gcc.dg/pr18501.c: New test. * gcc.dg/uninit-5.c: XFAIL. * gcc.dg/uninit-9.c: XFAIL. From-SVN: r92337
This commit is contained in:
parent
6c4ccfd8a1
commit
759830388d
@ -1,3 +1,9 @@
|
||||
2004-12-17 Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
tree-optimization/18501
|
||||
* tree-optimize.c (init_tree_optimization_passes): Run
|
||||
pass_late_warn_uninitialized before the last DCE run.
|
||||
|
||||
2004-12-17 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* config/i386/i386.c (x86_64_reg_class_name): Re-indent.
|
||||
|
@ -1,3 +1,9 @@
|
||||
2004-12-17 Diego Novillo <dnovillo@redhat.com>
|
||||
|
||||
* gcc.dg/pr18501.c: New test.
|
||||
* gcc.dg/uninit-5.c: XFAIL.
|
||||
* gcc.dg/uninit-9.c: XFAIL.
|
||||
|
||||
2004-12-17 Dale Johannesen <dalej@apple.com>
|
||||
|
||||
* gcc.dg/20041213-1.c: New.
|
||||
|
20
gcc/testsuite/gcc.dg/pr18501.c
Normal file
20
gcc/testsuite/gcc.dg/pr18501.c
Normal file
@ -0,0 +1,20 @@
|
||||
/* Expected uninitialized variable warning. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O -Wuninitialized" } */
|
||||
|
||||
unsigned bmp_iter_set ();
|
||||
int something (void);
|
||||
|
||||
void
|
||||
bitmap_print_value_set (void)
|
||||
{
|
||||
unsigned first; /* { dg-warning "may be used" "conditional in loop" } */
|
||||
|
||||
for (; bmp_iter_set (); )
|
||||
{
|
||||
if (!first)
|
||||
something ();
|
||||
first = 0;
|
||||
}
|
||||
}
|
@ -9,7 +9,7 @@ extern void foo(void);
|
||||
void
|
||||
func1(int cond)
|
||||
{
|
||||
int x; /* { dg-bogus "x" "uninitialized variable warning" } */
|
||||
int x; /* { dg-bogus "x" "uninitialized variable warning" { xfail *-*-* } } */
|
||||
|
||||
if(cond)
|
||||
x = 1;
|
||||
@ -23,7 +23,7 @@ func1(int cond)
|
||||
void
|
||||
func2 (int cond)
|
||||
{
|
||||
int x; /* { dg-bogus "x" "uninitialized variable warning" } */
|
||||
int x; /* { dg-bogus "x" "uninitialized variable warning" { xfail *-*-* } } */
|
||||
int flag = 0;
|
||||
|
||||
if(cond)
|
||||
|
@ -23,7 +23,7 @@ func(struct foo *list, int count)
|
||||
{
|
||||
int n_clobbers = 0;
|
||||
int i;
|
||||
struct foo **clob_list; /* { dg-bogus "clob_list" "uninitialized variable warning" } */
|
||||
struct foo **clob_list; /* { dg-bogus "clob_list" "uninitialized variable warning" { xfail *-*-* } } */
|
||||
|
||||
if(list[0].type == PARALLEL)
|
||||
{
|
||||
|
@ -381,12 +381,21 @@ init_tree_optimization_passes (void)
|
||||
NEXT_PASS (pass_loop);
|
||||
NEXT_PASS (pass_dominator);
|
||||
NEXT_PASS (pass_redundant_phi);
|
||||
/* FIXME: If DCE is not run before checking for uninitialized uses,
|
||||
we may get false warnings (e.g., testsuite/gcc.dg/uninit-5.c).
|
||||
However, this also causes us to misdiagnose cases that should be
|
||||
real warnings (e.g., testsuite/gcc.dg/pr18501.c).
|
||||
|
||||
To fix the false positives in uninit-5.c, we would have to
|
||||
account for the predicates protecting the set and the use of each
|
||||
variable. Using a representation like Gated Single Assignment
|
||||
may help. */
|
||||
NEXT_PASS (pass_late_warn_uninitialized);
|
||||
NEXT_PASS (pass_cd_dce);
|
||||
NEXT_PASS (pass_dse);
|
||||
NEXT_PASS (pass_forwprop);
|
||||
NEXT_PASS (pass_phiopt);
|
||||
NEXT_PASS (pass_tail_calls);
|
||||
NEXT_PASS (pass_late_warn_uninitialized);
|
||||
NEXT_PASS (pass_del_ssa);
|
||||
NEXT_PASS (pass_nrv);
|
||||
NEXT_PASS (pass_remove_useless_vars);
|
||||
|
Loading…
Reference in New Issue
Block a user