Commit bc3c12a2 by Eric Fisher Committed by Richard Biener

invoke.texi: Remove the documentation about option -Wunreachable-code.

2010-01-05  Eric Fisher  <joefoxreal@gmail.com>

	* doc/invoke.texi: Remove the documentation about option
	-Wunreachable-code.
	* common.opt (Wunreachable-code):  Preserved for backward
	compatibility.
	* tree-cfg.c: Remove the implementation of -Wunreachable-code.
	* opts.c (common_handle_option): Add OPT_Wunreachable_code to
	the backward compatibility flag section.

	* gcc.dg/pr12603.c: Remove -Wunreachable-code from dg-options.
	* gcc.dg/Wunreachable-1.c: Remove the testcase of
	-Wunreachable-code.
	* gcc.dg/Wunreachable-2.c: Likewise.
	* gcc.dg/Wunreachable-3.c: Likewise.
	* gcc.dg/Wunreachable-4.c: Likewise.
	* gcc.dg/Wunreachable-5.c: Likewise.
	* gcc.dg/Wunreachable-6.c: Likewise.
	* gcc.dg/Wunreachable-7.c: Likewise.
	* gcc.dg/Wunreachable-8.c: Likewise.
	* gcc.dg/20041231-1.c: Likewise.

From-SVN: r155645
parent 4ebf9c37
2010-01-05 Eric Fisher <joefoxreal@gmail.com>
* doc/invoke.texi: Remove the documentation about option
-Wunreachable-code.
* common.opt (Wunreachable-code): Preserved for backward
compatibility.
* tree-cfg.c: Remove the implementation of -Wunreachable-code.
* opts.c (common_handle_option): Add OPT_Wunreachable_code to
the backward compatibility flag section.
2010-01-05 Richard Guenther <rguenther@suse.de>
* tree-ssa-pre.c (bitmap_value_insert_into_set): Optimize.
......
......@@ -201,8 +201,8 @@ Common Var(warn_uninitialized) Init(-1) Warning
Warn about uninitialized automatic variables
Wunreachable-code
Common Var(warn_notreached) Warning
Warn about code that will never be executed
Common
Does nothing. Preserved for backward compatibility.
Wunused
Common Var(warn_unused) Init(0) Warning
......
......@@ -259,7 +259,7 @@ Objective-C and Objective-C++ Dialects}.
-Wstrict-overflow -Wstrict-overflow=@var{n} @gol
-Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand @gol
-Wsystem-headers -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized @gol
-Wunknown-pragmas -Wno-pragmas -Wunreachable-code @gol
-Wunknown-pragmas -Wno-pragmas @gol
-Wunsuffixed-float-constants -Wunused -Wunused-function @gol
-Wunused-label -Wunused-parameter -Wno-unused-result -Wunused-value -Wunused-variable @gol
-Wvariadic-macros -Wvla @gol
......@@ -4192,29 +4192,6 @@ cases where multiple declaration is valid and changes nothing.
@opindex Wno-nested-externs
Warn if an @code{extern} declaration is encountered within a function.
@item -Wunreachable-code
@opindex Wunreachable-code
@opindex Wno-unreachable-code
Warn if the compiler detects that code will never be executed.
This option is intended to warn when the compiler detects that at
least a whole line of source code will never be executed, because
some condition is never satisfied or because it is after a
procedure that never returns.
It is possible for this option to produce a warning even though there
are circumstances under which part of the affected line can be executed,
so care should be taken when removing apparently-unreachable code.
For instance, when a function is inlined, a warning may mean that the
line is unreachable in only one inlined copy of the function.
This option is not made part of @option{-Wall} because in a debugging
version of a program there is often substantial code which checks
correct functioning of the program and is, hopefully, unreachable
because the program does work. Another common use of unreachable
code is to provide behavior which is selectable at compile-time.
@item -Winline
@opindex Winline
@opindex Wno-inline
......
......@@ -2131,6 +2131,7 @@ common_handle_option (size_t scode, const char *arg, int value,
case OPT_fforce_addr:
case OPT_ftree_salias:
case OPT_ftree_store_ccp:
case OPT_Wunreachable_code:
/* These are no-ops, preserved for backward compatibility. */
break;
......
2010-01-05 Eric Fisher <joefoxreal@gmail.com>
* gcc.dg/pr12603.c: Remove -Wunreachable-code from dg-options.
* gcc.dg/Wunreachable-1.c: Remove the testcase of
-Wunreachable-code.
* gcc.dg/Wunreachable-2.c: Likewise.
* gcc.dg/Wunreachable-3.c: Likewise.
* gcc.dg/Wunreachable-4.c: Likewise.
* gcc.dg/Wunreachable-5.c: Likewise.
* gcc.dg/Wunreachable-6.c: Likewise.
* gcc.dg/Wunreachable-7.c: Likewise.
* gcc.dg/Wunreachable-8.c: Likewise.
* gcc.dg/20041231-1.c: Likewise.
2010-01-05 Jakub Jelinek <jakub@redhat.com>
PR other/42611
......
/* PR17544 Incorrect -Wunreachable-code warning
Origin: Giovanni Bajo
In C99 we append a "return 0;" when finishing a function, but it was
not given a source location. The gimplifier thinks a return statement
needs a locus so it would add one, making the compiler generated code
visible to the unreachable code warning. */
/* { dg-do compile } */
/* { dg-options "-std=c99 -O -Wunreachable-code" } */
int main (void) // 1
{ // 2
return 0; // 3
} // 4
/* { dg-do compile } */
/* { dg-options "-O2 -Wunreachable-code" } */
extern void foo (void);
extern void baz (void);
void bar (int i)
{
if (i < 2)
{
baz ();
return;
}
else
{
if (i >= 4 && i <= 5)
foo ();
return;
}
baz (); /* { dg-warning "will never be executed" "" } */
baz ();
baz ();
}
/* { dg-do compile } */
/* { dg-options "-O2 -Wunreachable-code" } */
extern int foo (const char *);
extern void baz (void);
const char *a[] = { "one", "two" };
void bar (void)
{
int i;
for (i = 0; i < 2; i++) /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
if (! foo (a[i])) /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
return;
baz (); /* { dg-bogus "will never be executed" } */
baz ();
baz ();
}
/* PR c/10175 */
/* { dg-do compile } */
/* { dg-options "-Wunreachable-code" } */
int i,j;
int main(void)
{
if (0) {
i = 0; /* { dg-warning "will never be executed" "" } */
j = 0;
} else {
i = 1;
j = 1;
}
return 0;
}
/* PR middle-end/10336 */
/* { dg-options "-Wunreachable-code" } */
void foo(int i)
{
switch(i) {
case 0:
break;
case 1:
break;
}
}
/* PR c/10175 */
/* { dg-do compile } */
/* { dg-options "-Wunreachable-code" } */
int value;
int main(void)
{
if (0)
value = 0; /* { dg-warning "will never be executed" "" } */
else
value = 1;
return 0;
}
/* PR c/11370 */
/* { dg-do compile } */
/* { dg-options "-Wunreachable-code" } */
extern int printf (const char *, ...);
extern void exit (int);
int main(int argc, char *argv[])
{
if (argc != 1)
exit(1);
{
int ix; /* { dg-bogus "will never be executed" } */
ix = printf("hello\n");
printf("%d\n", ix);
}
return 0;
}
/* PR c/11370 */
/* { dg-do compile } */
/* { dg-options "-O2 -Wunreachable-code" } */
extern int printf (const char *, ...);
extern void exit (int);
int main(int argc, char *argv[])
{
if (argc != 1)
exit(1);
{
int ix; /* { dg-bogus "will never be executed" } */
ix = printf("hello\n");
printf("%d\n", ix);
}
return 0;
}
/* { dg-do compile } */
/* { dg-options "-O2 -Wunreachable-code" } */
float Factorial(float X)
{
float val = 1.0;
int k,j;
for (k=1; k < 5; k++) /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
{
val += 1.0; /* { dg-bogus "will never be executed" "" { xfail *-*-* } } */
}
return (val); /* { dg-bogus "will never be executed" } */
}
int main (void)
{
float result;
result=Factorial(2.1);
return (0);
}
/* PR 12603: No return statement warning on function that never returns with -O3. */
/* { dg-do compile } */
/* { dg-options "-O3 -Wall -Wextra -Wreturn-type -Wunreachable-code" } */
/* { dg-options "-O3 -Wall -Wextra -Wreturn-type" } */
int
this_function_never_returns ()
{
......
......@@ -1760,7 +1760,6 @@ static void
remove_bb (basic_block bb)
{
gimple_stmt_iterator i;
source_location loc = UNKNOWN_LOCATION;
if (dump_file)
{
......@@ -1830,24 +1829,9 @@ remove_bb (basic_block bb)
i = gsi_last_bb (bb);
else
gsi_prev (&i);
/* Don't warn for removed gotos. Gotos are often removed due to
jump threading, thus resulting in bogus warnings. Not great,
since this way we lose warnings for gotos in the original
program that are indeed unreachable. */
if (gimple_code (stmt) != GIMPLE_GOTO
&& gimple_has_location (stmt))
loc = gimple_location (stmt);
}
}
/* If requested, give a warning that the first statement in the
block is unreachable. We walk statements backwards in the
loop above, so the last statement we process is the first statement
in the block. */
if (loc > BUILTINS_LOCATION && LOCATION_LINE (loc) > 0)
warning_at (loc, OPT_Wunreachable_code, "will never be executed");
remove_phi_nodes_and_edges_for_unreachable_block (bb);
bb->il.gimple = NULL;
}
......
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