Commit 1431a37d by Andreas Krebbel Committed by Andreas Krebbel

re PR middle-end/47646 (Revision 169918 caused many testsuite failures)

2011-02-08  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	PR middle-end/47646
	* gcc.dg/pr39666-2.c (foo2): If the location of the statement
	using the variable is known the warning is emitted there.
	* gcc.dg/uninit-pr19430.c (foo): Likewise.
	* g++.dg/warn/Wuninitialized-5.C (foo): Likewise.

	* c-c++-common/pr20000.c (g): Both warnings occur at the return
	statement.
	(vg): Likewise.
	* gcc.dg/noreturn-1.c (foo5): Likewise.
	* objc.dg/attributes/method-noreturn-1.m (method1): Likewise.
	(method2): Likewise.

	* gfortran.dg/pr25923.f90 (baz): The warning will now be issued for
	the return statement using the uninitialized variable.
	* gfortran.dg/pr39666-2.f90 (f): Likewise.

From-SVN: r169927
parent 3865a06f
2011-02-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
PR middle-end/47646
* gcc.dg/pr39666-2.c (foo2): If the location of the statement
using the variable is known the warning is emitted there.
* gcc.dg/uninit-pr19430.c (foo): Likewise.
* g++.dg/warn/Wuninitialized-5.C (foo): Likewise.
* c-c++-common/pr20000.c (g): Both warnings occur at the return
statement.
(vg): Likewise.
* gcc.dg/noreturn-1.c (foo5): Likewise.
* objc.dg/attributes/method-noreturn-1.m (method1): Likewise.
(method2): Likewise.
* gfortran.dg/pr25923.f90 (baz): The warning will now be issued for
the return statement using the uninitialized variable.
* gfortran.dg/pr39666-2.f90 (f): Likewise.
2011-02-08 Richard Guenther <rguenther@suse.de> 2011-02-08 Richard Guenther <rguenther@suse.de>
PR middle-end/47639 PR middle-end/47639
......
...@@ -10,7 +10,7 @@ void h(void) __attribute__((noreturn)); ...@@ -10,7 +10,7 @@ void h(void) __attribute__((noreturn));
int g(void) { int g(void) {
return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" } */ return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" } */
} /* { dg-warning "'noreturn' function does return" } */ } /* { dg-warning "'noreturn' function does return" "" { target *-*-* } 12 } */
int g2(void) { int g2(void) {
h(); h();
...@@ -25,7 +25,7 @@ int vg2(void); /* { dg-bogus ".noreturn. function returns non-void value" } */ ...@@ -25,7 +25,7 @@ int vg2(void); /* { dg-bogus ".noreturn. function returns non-void value" } */
int vg(void) { int vg(void) {
return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "" { target c } 27 } */ return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "" { target c } 27 } */
} /* { dg-warning "'noreturn' function does return" "" { target c } 28 } */ } /* { dg-warning "'noreturn' function does return" "" { target c } 27 } */
int vg2(void) { int vg2(void) {
h(); h();
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
int int
foo (int i) foo (int i)
{ {
int j; // { dg-warning "may be used uninitialized" } int j;
switch (i) switch (i)
{ {
case -__INT_MAX__ - 1 ... -1: case -__INT_MAX__ - 1 ... -1:
...@@ -18,5 +18,5 @@ foo (int i) ...@@ -18,5 +18,5 @@ foo (int i)
j = 4; j = 4;
break; break;
} }
return j; return j; // { dg-warning "may be used uninitialized" }
} }
...@@ -35,7 +35,7 @@ void ...@@ -35,7 +35,7 @@ void
foo5(void) foo5(void)
{ {
return; /* { dg-warning "'noreturn' has a 'return' statement" "detect invalid return" } */ return; /* { dg-warning "'noreturn' has a 'return' statement" "detect invalid return" } */
} /* { dg-warning "function does return" "detect return from noreturn" } */ } /* { dg-warning "function does return" "detect return from noreturn" { target c } 37 } */
extern void foo6(void); extern void foo6(void);
void void
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
int int
foo (int i) foo (int i)
{ {
int j; /* { dg-warning "may be used uninitialized" } */ int j;
switch (i) switch (i)
{ {
case -__INT_MAX__ - 1 ... -1: case -__INT_MAX__ - 1 ... -1:
...@@ -18,5 +18,5 @@ foo (int i) ...@@ -18,5 +18,5 @@ foo (int i)
j = 4; j = 4;
break; break;
} }
return j; return j; /* { dg-warning "may be used uninitialized" } */
} }
...@@ -18,8 +18,8 @@ foo (int i) ...@@ -18,8 +18,8 @@ foo (int i)
int foo2( void ) { int foo2( void ) {
int rc; /* { dg-warning "'rc' is used uninitialized in this function" } */ int rc;
return rc; return rc; /* { dg-warning "'rc' is used uninitialized in this function" } */
*&rc = 0; *&rc = 0;
} }
......
...@@ -10,7 +10,7 @@ implicit none ...@@ -10,7 +10,7 @@ implicit none
contains contains
function baz(arg) result(res) ! { dg-warning "res.yr' may be" "PR45505" { xfail ilp32 } } function baz(arg) result(res) ! { dg-bogus "res.yr' may be" "PR45505" { xfail ilp32 } }
type(bar), intent(in) :: arg type(bar), intent(in) :: arg
type(bar) :: res type(bar) :: res
logical, external:: some_func logical, external:: some_func
...@@ -19,7 +19,7 @@ contains ...@@ -19,7 +19,7 @@ contains
else else
res = arg res = arg
end if end if
end function baz ! { dg-bogus "res.yr' may be" "PR45505" { xfail ilp32 } } end function baz ! { dg-warning "res.yr' may be" "PR45505" { xfail ilp32 } }
end module foo end module foo
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
! { dg-do compile } ! { dg-do compile }
! { dg-options "-O2 -Wuninitialized" } ! { dg-options "-O2 -Wuninitialized" }
FUNCTION f(n) ! { dg-warning "may be used uninitialized" } FUNCTION f(n)
INTEGER, INTENT(in) :: n INTEGER, INTENT(in) :: n
REAL :: f REAL :: f
...@@ -11,4 +11,4 @@ FUNCTION f(n) ! { dg-warning "may be used uninitialized" } ...@@ -11,4 +11,4 @@ FUNCTION f(n) ! { dg-warning "may be used uninitialized" }
CASE (0); f = 0.0 CASE (0); f = 0.0
CASE (2:); f = 1.0 CASE (2:); f = 1.0
END SELECT END SELECT
END FUNCTION END FUNCTION ! { dg-warning "may be used uninitialized" }
...@@ -18,11 +18,11 @@ ...@@ -18,11 +18,11 @@
+ (id) method1 + (id) method1
{ {
return self; /* { dg-warning "function declared .noreturn. has a .return. statement" } */ return self; /* { dg-warning "function declared .noreturn. has a .return. statement" } */
} /* { dg-warning ".noreturn. function does return" } */ } /* { dg-warning ".noreturn. function does return" "" { target *-*-* } 20 } */
- (id) method2 - (id) method2
{ {
return self; /* { dg-warning "function declared .noreturn. has a .return. statement" } */ return self; /* { dg-warning "function declared .noreturn. has a .return. statement" } */
} /* { dg-warning ".noreturn. function does return" } */ } /* { dg-warning ".noreturn. function does return" "" { target *-*-* } 24 } */
+ (id) method3 + (id) method3
{ {
abort (); abort ();
......
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